ワイヤーされている MQ データ・バインディング・インポートを使用してエンドポイントの動的起動を有効にする方法について説明します。
概要
インポートで指定されたものと異なるエンドポイントを使用してサービスを起動できます。
MQ バインディングの場合、MQ URI 標準に準拠した URL を使用して動的エンドポイントを指定することができます。
図 1. ワイヤーされているインポートを使用した動的起動によるエンドポイント・オーバーライドの図
WebSphere® Integration Developer でタスクを実行して、動的エンドポイントが設定されたメディエーション・モジュールを作成できます。
エンドポイント・アドレスのプログラム・オーバーライド
SCA パブリック API を使用してエンドポイント・アドレスをオーバーライドすることができます。
以下のコード例の
uri 値は、MQ URI 標準に準拠している必要があります。
epr = EndpointReferenceFactory.INSTANCE.createEndpointReference();
epr.setAddress(uri);
Service dynamicService = (Service) ServiceManager.INSTANCE.getService(refname, epr);
MQ エンドポイントの記述
動的起動で使用する MQ エンドポイントは、MQ URI 標準のサブセットに基づいた構造になります。
動的起動の場合は、MQ エンドポイントの URI を以下の形式で指定する必要があります。

>>-wmq:/msg/queue/--queueName--+-------+-----------------------><
'-@qmgr-'
それぞれの URI では、
queueName とオプションの宛先キュー・マネージャー
qmgr により、インポート・バインディングで指定されている宛先キューがオーバーライドされます。
有効な MQ URI の例を以下に示します。
wmq:/msg/queue/queueName
wmq:/msg/queue/queueName@qmgr
MQ エンドポイントを使用した動的起動の作成
動的エンドポイントが設定されたメディエーション・モジュールを作成するには、以下のタスクを実行します。
- モジュール 1 を作成し、インポートにワイヤーされている POJO を格納します。
- モジュール 2 を作成し、POJO 2 にワイヤーされているエクスポート 2 を格納します。
- モジュール 3 を作成し、POJO 3 にワイヤーされているエクスポート 3 を格納します。
- インポートがメッセージをエクスポート 2 に送信するように構成します。
- エクスポート 2 とエクスポート 3 のポート・タイプが同じであることを確認します。
- 3 つのモジュールをサーバーにデプロイします。
動的起動の使用
メッセージ内でエンドポイントとして指定されているエクスポート 3 を使用して POJO を起動すると、動的起動が実行されます。
起動された POJO はメッセージからエンドポイントを抽出し、元のデプロイメントで指定されているエクスポート 2 ではなくエクスポート 3 をエンドポイントとして識別します。
さらに POJO は、インポートにワイヤーされている参照と SCA EPR API を使用して、メッセージのエンドポイントで指定されているリモート・サービスを起動します。
サービスの起動後に、応答が POJO に返されます。
片方向の起動メッセージは、両方向の起動メッセージと同じように機能しますが、応答メッセージは返しません。
エンドポイントの引数が空になっていたり欠落した状態で POJO を起動すると、デフォルトの起動方法が使用され、エクスポート 2 と POJO 2 が呼び出されます。
以下の 2 つの条件のいずれかに該当する場合は、実行時例外が発生します。
- URI の構文が無効な場合。
- 指定のエンドポイントが存在しない場合。