30.7.2 受信したデータの取得方法
MTOM/XOP仕様形式の添付ファイルで受信したデータがjavax.activation.DataHandlerオブジェクト以外(byte[],java.awt.Imageオブジェクト,およびjavax.xml.transform.Sourceインスタンス)の場合,JAXBが受信したデータを適切なJavaオブジェクトに変換するため,アプリケーションで変換する必要はありません。
受信したデータがjavax.activation.DataHandlerオブジェクトの場合,wsi:swaRef形式の添付ファイルと同様の方法で,受信したデータを取得できます。
wsi:swaRef形式の添付ファイルの取得方法については,「28.5.2 添付ファイルデータを取得する方法(wsi:swaRef形式)」を参照してください。
- 〈この項の構成〉
(1) javax.activation.DataHandlerオブジェクト取得時の注意事項
MTOM/XOP仕様形式の添付ファイルを含むMIME Multipart/Related構造のSOAPメッセージを受信すると,ストリーミングされたMTOM/XOP仕様形式の添付ファイルとして操作できます。MTOM/XOP仕様形式の添付ファイルの受信側では,javax.activation.DataHandlerオブジェクトが持つ入力ストリームからすべてのデータを読み込まないと受信処理が完了しないため,送信側の送信処理は受信側の受信処理が完了するまで待ち状態が続きます。
この状態を解消するためには,javax.activation.DataHandlerオブジェクトが持つjava.io.InputStreamオブジェクトからすべてのデータを読み込むか,javax.activation.DataHandlerクラスのwriteTo(java.io.OutputStream)メソッドを使用して入力ストリームのデータを出力ストリームに書き込む必要があります。
(2) javax.xml.transform.Sourceオブジェクト取得時の注意事項
MTOM/XOP仕様形式の添付ファイルで受信したデータがjavax.xml.transform.Sourceオブジェクトの場合,ストリーミングされたMTOM/XOP仕様形式の添付ファイルとして操作できます。javax.xml.transform.Sourceオブジェクトは,JAXBがjavax.xml.transform.stream.StreamSourceオブジェクトに変換します。
MTOM/XOP仕様形式の添付ファイルの受信側では,javax.xml.transform.stream.StreamSourceオブジェクトが持つ入力ストリームからすべてのデータを読み込まないと受信処理が完了しないため,送信側の送信処理は受信側の受信処理が完了するまで待ち状態が続きます。
この状態を解消するためには,javax.xml.transform.stream.StreamSourceオブジェクトが持つjava.io.Readerオブジェクトからすべてのデータを読み込む必要があります。