このトピックは、添付エンコード・スタイルを使用した SOAP メッセージから WS-I Attachments Profile バージョン 1.0 のエンコード・スタイルにマップするメディエーションを作成する場合に使用します。
始める前に
サービス統合バスでのメディエーションの使用の概要については、
メディエーションの学習を参照してください。メディエーションを WebSphere Application Server にインストールしてバス宛先に関連付ける方法について詳しくは、メディエーションの使用を参照してください。
このトピックでは、アセンブリー・ツール や IBM® Rational® Application Developer などの Java Platform Enterprise Edition (Java EE) セッション Bean 開発環境の使用について十分理解していることが前提となります。
このトピックで示されたメディエーションの例は、結合添付ファイルのサポート: WSDL の例で示されている WSDL の例を基にしています。
このタスクについて
メディエーションを使用して、添付エンコードを使用した SOAP メッセージから WS-I Attachments Profile バージョン 1.0 のエンコードにマップできます。
両方のケースにおいて WSDL 定義は同一であるため、コンテンツ ID をバージョン 1.0 規則に一致するよう再書き込みするメディエーションを作成する場合、メッセージは、バージョン 1.0 のルールに基づいてサービス統合テクノロジーによりエンコードされます。
マッピング・メディエーションを作成するには、Java Platform Enterprise Edition (Java EE) セッション Bean 開発環境を使用して、以下のステップを実行します。
手順
- 空のメディエーション・ハンドラー・プロジェクトを作成します。 これにより、
プロジェクトが作成され、ハンドラー・インターフェースを実装するハンドラー・クラスが作成されます。
この方法の詳細については、メディエーション・ハンドラーの書き込みを参照してください。
- EJB 記述子のメディエーション・ペインを使用して、メディエーション・ハンドラーとしてハンドラー・クラスを定義します。
注: このとき、
既知のメディエーション・ハンドラー・リストの名前を指定します。後でバスにメディエーションを作成するときの参照用に、
この名前を控えておいてください。
- ハンドラーにマッピング機能を追加します。 始める前に、メディエーション機能のハンドラー・コードへの追加を確認してください。
以下は、コンテンツ ID 値をバージョン 1.0 規則に一致するよう再書き込みするメディエーション・ハンドラーのコード例です。
int uuidBase = 0;
DataObject root = SIMessage.getDataGraph().getRootObject();
List attachments = root.getList("info/attachments");
Iterator entries = attachments.iterator();
while(entries.hasNext()) {
DataObject entry = (DataObject) entries.next();
if(entry.getType().equals("BoundMIMEAttachmentEntryType")) {
String newContentId = entry.getString("messagePart") + "=" +
Integer.toString(uuidBase++) +
"@some.domain";
}
}
注: 添付リファレンスを使用した SOAP (swaref)、または添付ファイルを参照するその他の URI メカニズムを使用するメッセージの場合、URI の値も新しいコンテンツ ID 値に一致するよう更新する必要があります。
ただし、そのようなメカニズムは、通常、アンバウンドの添付ファイルを参照する場合に使用されます。
メディエーション・ハンドラー・クラスなど、サービス統合テクノロジー・クラスについて詳しくは、生成 API ドキュメンテーション - アプリケーション・プログラミング・インターフェースを参照してください。
- マッピング・メディエーション・エンタープライズ・アプリケーションをエクスポートします。
次のタスク
これで、
メディエーションの使用で説明されているように、
WebSphere Application Server にメディエーションをインストールし、バス宛先にそれを関連付ける準備ができました。