Java™ API for XML Web Services (JAX-WS) バインディングのいずれかを使用すると、PDF ファイルや JPG 画像などの添付ファイル付き SOAP メッセージを送信および受信できます。SCA モジュールのメディエーション・フロー・コンポーネントを使用して添付ファイルを処理することもできます。
MIME multipart SOAP メッセージの一部である
参照されていない 添付ファイルを送信および受信できます。MIME multipart SOAP メッセージでは、SOAP 本体がメッセージの最初の部分であり、添付ファイルが後続の部分です。SOAP 本体には、添付ファイルへの参照情報は組み込まれていません。
図 1. 参照されていない添付ファイル付きの SOAP メッセージ
参照されていない添付ファイル付きの SOAP メッセージは、Web サービス・エクスポートを介して Web サービス・インポートへ送信できます。ターゲットの Web サービスへ送信される出力メッセージには、添付ファイルが含まれます。
図 2. SCA モジュールを通過する添付ファイル
図 2 は、添付ファイル付きの SOAP メッセージが変更なしで通過する様子を示しています。
SOAP メッセージは、メディエーション・フロー・コンポーネントを使用して変更することもできます。例えば、メディエーション・フロー・コンポーネントを使用して SOAP メッセージからデータ (この場合は、メッセージの本体内部のバイナリー・データ) を抽出し、添付ファイル付きの SOAP メッセージを作成できます。
データは、サービス・メッセージ・オブジェクト (SMO) の添付ファイル・エレメントの部分として処理されます。
図 3. メディエーション・フロー・コンポーネントによって処理されるメッセージ
反対に、メディエーション・フロー・コンポーネントは、添付ファイルを抽出してエンコードすることによって着信メッセージを変換し、その後添付ファイルなしでメッセージを送信できます。
SMO の構造について詳しくは、関連トピックの情報を参照してください。
着信 SOAP メッセージからデータを抽出して添付ファイル付きの SOAP メッセージを作成する代わりに、データベースなどの外部ソースから添付ファイル・データを取得できます。
図 4. データベースから取得して SOAP メッセージに追加した添付ファイル
反対に、メディエーション・フロー・コンポーネントは着信 SOAP メッセージから添付ファイルを抽出して、メッセージを処理 (例えば、添付ファイルをデータベースに保管) できます。
参照されていない添付ファイルは、メディエーション・フロー・コンポーネントを介した場合にのみ伝搬できます。添付ファイルに別のコンポーネント・タイプでアクセスする必要がある場合や、別のコンポーネント・タイプに伝搬する必要がある場合には、メディエーション・フロー・コンポーネントを使用して、このコンポーネントがアクセスできる場所へ添付ファイルを移動してください。
重要: 『SMO の XML 表記』で説明しているように、XSL 変換メディエーション・プリミティブは、XSLT 1.0 変換を使用してメッセージを変換します。変換は、SMO の XML 直列化で作動します。XSL 変換メディエーション・プリミティブより、直列化のルートを指定することができます。また、XML 文書のルート・エレメントはこのルートを反映します。
SOAP メッセージを添付ファイルと共に送信する場合、選択したルート・エレメントによって、添付ファイルの伝搬方法が決まります。
- 「/body」を XML マップのルートとして使用した場合は、デフォルトですべての添付ファイルがマップ全体に伝搬します。
- 「/」をマップのルートとして使用した場合は、添付ファイルの伝搬を制御できます。