WebSphere Application Server Version 6.1 Feature Pack for Web Services   
             オペレーティング・システム: AIX , HP-UX, i5/OS, Linux, Solaris, Windows, Windows Vista, z/OS

             目次と検索結果のパーソナライズ化
             New or updated topic for this feature pack

メッセージ送信最適化メカニズム

SOAP Message Transmission Optimization Mechanism (MTOM) は、World Wide Web Consortium (W3C) により作成された標準です。MTOM は、XML 情報セット (Infoset) を SOAP アプリケーションに表示しながら、選択的にメッセージの一部を再コード化することにより、SOAP メッセージの伝送やワイヤー・フォーマットを最適化するメカニズムを記述します。

ユーザーが、Web サービス要求と一緒にイメージやファイルなどのバイナリー添付ファイルを送信する理由は、数多くあります。これを実行するには、以下のように複数の方法があります。

XOP は、SOAP および MIME パッケージングにのみ適用されるのではなく、すべての XML Infoset とすべてのパッケージング・メカニズムに適用される、バイナリー・コンテンツを持つ XML Infoset のシリアライゼーション・メカニズムを定義します。これは、XML 文書がルート・パーツにあたる、MIME multipart/related パッケージに偶然似ている、XML の代替シリアライゼーションです。このルート・パーツは文書の XML シリアライゼーションにたいへんよく似ていますが、base64 でエンコードされたデータが、base64 でエンコードされていない MIME パーツの 1 つへの参照で置き換えられる点が異なります。この参照によって、ユーザーはエンコードに関連するバルク処理および処理のオーバーヘッドを回避することができます。 エンコードは、バイナリー・データが XML の世界に直接適合できる、唯一の方法です。

MTOM マッピング生成が無効な場合、XOP は使用できません。XOP が使用不可の場合、バイナリー・データは MIME 添付ファイルを使用して送信されません。代わりに、バイナリー・データは通常のように base64 でエンコードされます。

MTOM 仕様は、3 つのパートで構成されています。

Java API for XML Web Services (JAX-WS) は、MTOM を使用したバイナリー・データ添付ファイル送信のサポートを追加しています。 JAX-WS は、JAX-WS 2.0、JAXB 2.0、および SAAJ 1.3 を含む、新たに再体系化された Web サービス用 API スタックの心臓部です。 API スタックは統合スタックと呼ばれることもあります。JAX-WS は、Web サービスおよび Web アプリケーションにおける JAX-RPC に取って代わるように設計されています。

添付ファイルの方法

値または参照による添付ファイルは、XML 形式のメッセージにおける不透明なデータを処理するために広く受け入れられてきた手法です。
  • 値による添付ファイルは、base64 または 16 進 テキスト・エンコード方式を使用して、不透明なデータ・コンテンツがエレメントまたは属性として埋め込まれる場合です。これは、それぞれデータ型 xs:base64Binary および xs:hexBinary として XML スキーマで成文化されます。
  • 参照による添付ファイルは、URI を使用して、不透明なデータ・コンテンツがエレメントまたは属性として外部的に参照される場合です。これは、データ型 xs:anyURI として XML スキーマで成文化されます。
これらの 2 つの手法のいずれを使用してもそれぞれ利点と欠点があります。MTOM はこれらの固有の添付ファイルの問題の解決に重点を置いた仕様です。

これとは別の標準が World Wide Web Consortium (W3C) により定義されており、こちらは SOAP with Attachments (SwA) と呼ばれます。SwA は、添付ファイルを持つ SOAP メッセージをパッケージ化する方法として開発されました。 一部のベンダーでは SwA をサポートしていないため、SwA をより強力な MTOM および XOP メカニズムと置き換えることができます。SwA と MTOM は概念的に似ており、どちらもバイナリー・データを MIME 文書の MIME 添付ファイルとしてエンコードします。 MIME 添付ファイルを使用することにより、大きなバイナリー・ペイロード・トランスポートのパフォーマンスが向上します。

SwA と MTOM の違いには、他に以下のようなものがあります。
  • MTOM は、XOP という標準を使用します。この XOP は SOAP ペイロード内に存在する XOP 参照を定義します。この参照は、バイナリー・データが含まれている MIME 添付ファイルを指します。
  • MTOM の場合、XOP 参照は論理的にバイナリー・データを XML 情報セット (Infoset) に組み込みます。SwA の場合、href は、物理的に XML 文書外にあるばかりでなく、論理的にその Infoset に組み込まれていないデータを指します。
  • MTOM の場合、バイナリー添付ファイルは、それが SOAP XML 文書の一部であるかのように、論理的に署名できます。
  • IBM のほか、Microsoft .NET でも SwA で見つかるインターオペラビリティーの一部の問題を排除できる MTOM をサポートしています。インターオペラビリティーは、提案された変更を共同提案者が検討した際に、第一目標として扱われました。
MTOM 添付ファイル方式では、SOAP with Attachment (SwA) ソリューションで提供されるトランスポートの効率性も取り込みつつ、SOAP インフラストラクチャーを利用しています。

SOAP 1.2 および SOAP 1.1

SOAP 1.1 は XML 仕様に基づいています。恐らく SOAP 1.1 実装は今後数年間存在し続けます。まだ SOAP 1.1 を使用しているユーザーのために、添付ファイルのサポート用に MTOM を使用する相互運用可能な方法が用意されています。 SAP、Oracle、Microsoft、および IBM は、SOAP 1.1 ペイロードで MTOM を使用できる方法を定義する、SOAP 1.1 Binding for MTOM 1.0 仕様を W3C に提出しました。この仕様は、SOAP 1.1 で MTOM および XOP 技術をうまく利用するために必要な、SOAP MTOM および XOP 仕様への変更を詳しく定めています。詳しくは、次の Web サイトを参照してください。http://schemas.xmlsoap.org/soap/mtom/SOAP11MTOM10.pdf

MTOM は SOAP バージョン 1.2 の機能で、Infoset に基づいています。詳しくは、XML 情報セット を参照してください。

MTOM がなければ、データはスキーマ (base64 または 16 進) で記述されているフォーマットのいずれかでエンコードされ、XML 文書で表示されます。次の例は <xsd:base64Binary> エレメントを持つ SOAP メッセージを示します。

... other transport headers ...
Content-Type: text/xml; charset=UTF-8

<?xml version="1.0" encoding="UTF-8"?>
   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
      <soapenv:Header/>
      <soapenv:Body>
         <sendImage xmlns="http://org/apache/axis2/jaxws/sample/mtom">
            		<input>
               <imageData>R0lGODl  ... more base64 encoded data ...  KTJk8giAAA7</imageData>
            		</input>
         </sendImage>
      </soapenv:Body>
   </soapenv:Envelope>

MTOM が使用可能になっている場合、添付ファイルを表すバイナリー・データは SOAP メッセージの MIME 添付ファイルとして含まれています。以下の例は、添付ファイル・データを持つ、MTOM を使用可能にした SOAP メッセージを示します。

... other transport headers ...
Content-Type: multipart/related; boundary=MIMEBoundaryurn_uuid_0FE43E4D025F0BF3DC11582467646812; 
type="application/xop+xml"; start="<0.urn:uuid:0FE43E4D025F0BF3DC11582467646813@apache.org>"; 
start-info="text/xml"; charset=UTF-8

--MIMEBoundaryurn_uuid_0FE43E4D025F0BF3DC11582467646812
content-type: application/xop+xml; charset=UTF-8; type="text/xml";
content-transfer-encoding: binary
content-id: 
   <0.urn:uuid:0FE43E4D025F0BF3DC11582467646813@apache.org>

<?xml version="1.0" encoding="UTF-8"?>
         <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
            <soapenv:Header/>
            <soapenv:Body>
               <sendImage xmlns="http://org/apache/axis2/jaxws/sample/mtom">
                  		<input>
                     <imageData>
                        <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" 
                             href="cid:1.urn:uuid:0FE43E4D025F0BF3DC11582467646811@apache.org"/>
                     </imageData>
                  		</input>
               </sendImage>
            </soapenv:Body>
         </soapenv:Envelope>
--MIMEBoundaryurn_uuid_0FE43E4D025F0BF3DC11582467646812
content-type: text/plain
content-transfer-encoding: binary
content-id: 
         <1.urn:uuid:0FE43E4D025F0BF3DC11582467646811@apache.org>

... binary data goes here ...
--MIMEBoundaryurn_uuid_0FE43E4D025F0BF3DC11582467646812--



サブトピック
XML-binary Optimized Packaging
XML 情報セット
関連概念
JAX-WS
SOAP
関連情報
SOAP Message Transmission Optimization Mechanism 2004
SOAP Message Transmission Optimization Mechanism 2005
SOAP 1.1 Binding for MTOM 1.0
WSDL 1.1 Binding Extension for SOAP 1.2
概念トピック    

ご利用条件 | フィードバック

最終更新: Jan 21, 2008 4:10:06 PM EST
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r1/index.jsp?topic=/com.ibm.websphere.wsfep.multiplatform.doc/info/ae/ae/cwbs_soapmtom.html