ワイヤーされている Web サービス・バインディング・インポートを使用してエンドポイントの動的起動を有効にする方法について説明します。
概要
インポートで指定されたものと異なるエンドポイントを使用してサービスを起動できます。
Web サービス・バインディングの場合、Web サービス URI 標準に準拠した URL を使用して動的エンドポイントを指定することができます。
図 1. ワイヤーされているインポートを使用した動的起動によるエンドポイント・オーバーライドの図
WebSphere® Integration Developer でタスクを実行して、動的エンドポイントが設定されたメディエーション・モジュールを作成できます。
エンドポイント・アドレスのプログラム・オーバーライド
SCA パブリック API を使用してエンドポイント・アドレスをオーバーライドすることができます。
以下のコード例の
uri 値は、有効な Web サービス形式で指定する必要があります。
epr = EndpointReferenceFactory.INSTANCE.createEndpointReference();
epr.setAddress(uri);
Service dynamicService = (Service) ServiceManager.INSTANCE.getService(refname, epr);
URI に接頭部
http:/ が指定されている場合、このアドレスは SOAP/HTTP エンドポイントとして解釈されます。
URI に接頭部
jms:/ が指定されている場合、このアドレスは SOAP/JMS エンドポイントとして解釈されます。
Web サービス・エンドポイントを使用した動的起動の作成
動的エンドポイントが設定されたメディエーション・モジュールを作成するには、以下のタスクを実行します。
- メディエーション・モジュール 1 を作成し、インポートにワイヤーされている POJO を格納します。
- メディエーション・モジュール 2 を作成し、POJO 2 にワイヤーされているエクスポート 2 を格納します。
- メディエーション・モジュール 3 を作成し、POJO 3 にワイヤーされているエクスポート 3 を格納します。
- インポートがメッセージをエクスポート 2 に送信するように構成します。
- エクスポート 2 とエクスポート 3 のポート・タイプが同じであることを確認します。
- 3 つのモジュールをサーバーにデプロイします。
動的起動の使用
メッセージ内でエンドポイントとして指定されているエクスポート 3 を使用して POJO を起動すると、動的起動が実行されます。
起動された POJO はメッセージからエンドポイントを抽出し、元のデプロイメントで指定されているエクスポート 2 ではなくエクスポート 3 をエンドポイントとして識別します。
さらに POJO は、インポートにワイヤーされている参照と SCA エンドポイント参照 API を使用して、メッセージのエンドポイントで指定されているリモート・サービスを起動します。
サービスの起動後に、応答が POJO に返されます。
片方向の起動メッセージは、両方向の起動メッセージと同じように機能しますが、応答メッセージは返しません。
以下の条件のいずれかに該当する場合は、実行時例外が発生します。
- 指定のエンドポイントが存在しない場合。
- URL の形式とインポート・バインディングのタイプに互換性がない場合。
- URI の構文が無効な場合。
- URL は jms: で始まるが、インポート Web サービス・バインディングが SOAP/JMS 処理用に構成されていない場合。