SOAP MTOM

SOAP Message Transmission Optimization Mechanism (MTOM) は、World Wide Web Consortium (W3C) が策定した規格です。MTOM は、XML Information Set (Infoset) を SOAP アプリケーションに表示しながら、メッセージの一部を選択的に再エンコードすることによって SOAP メッセージの送信またはワイヤー・フォーマットを最適化するための、メカニズムを記述しています。

MTOM では、SOAP over HTTP および MIME over HTTP のコンテキストで XML-binary Optimized Packaging (XOP) を使用します。XOP は、SOAP および MIME のパッケージ化のみでなくあらゆる XML Infoset およびあらゆるパッケージ化メカニズムにも適用可能なバイナリー・コンテンツを含む、XML Infoset のシリアライゼーション・メカニズムを定義します。これは、XML の代替シリアライゼーションであり、偶然ですが、XML 文書をルート部として含む MIME マルチパートまたは関連パッケージによく似ています。このルート部は、文書の XML シリアライゼーションに非常によく似ていますが、Base64 エンコード・データが、MIME パートの 1 つ (これは Base64 エンコードされていません) への参照によって置き換えられる点が異なります。そのような参照を使用することで、エンコードに伴う処理のボリュームを減らしてオーバーヘッドを回避することができます。エンコードはバイナリー・データを XML と直接に連携させる唯一の手段です。

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

MTOM が使用できない場合、データは、スキーマ (Base64 または hex) に記述されている何らかのフォーマットでエンコードされてから、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>


         <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
            <soapenv:Header/>
            <soapenv:Body>
               <ati:sendImage xmlns="http://org/apache/axis2/jaxws/sample/mtom" xmlns:ati="http://org/apache/axis2/jaxws/sample/mtom">
                  <ati:input>
                     <ati:imageData>
                        <xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:1.urn:uuid:0FE43E4D025F0BF3DC11582467646811@apache.org"/>
                     </ati:imageData>
                  </ati:input>
               </ati: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--

詳しくは、正式な MTOM 仕様 (SOAP Message Transmission Optimization Mechanism) を参照してください。

トピックのタイプを示すアイコン 概念のトピック
インフォメーション・センターのご利用条件 | フィードバック

タイム・スタンプ・アイコン 最終更新: May 29, 2014 10:20

ファイル名: cmtom.html