このトピックは、メッセージに対して特定の転送経路を選択するメディエーションを作成する場合に使用します。
始める前に
サービス統合バスでのメディエーションの使用の概要については、
メディエーションの学習を参照してください。メディエーションを WebSphere Application Server にインストールしてバス宛先に関連付ける方法について詳しくは、メディエーションの使用を参照してください。
このトピックでは、アセンブリー・ツール や IBM® Rational® Application Developer などの Java Platform Enterprise Edition (Java EE) セッション Bean 開発環境の使用について十分理解していることが前提となります。
このタスクについて
ルーティング・メディエーションは、ルーティング・ハンドラーを含むメディエーション・アプリケーションです。
ルーティング・メディエーションをサービス統合バスの宛先に関連付け、そのメディエーションを使用して、使用可能な経路の範囲から特定の経路を選択します。例えば、新規アウトバウンド・サービス構成の作成、または既存のアウトバウンド・サービス構成の変更を行うとき、
ポート選択 Mediation を適用すると、アウトバウンド・サービスで使用可能なポートの範囲から特定のアウトバウンド・ポートを選択することができます。
ルーティング・メディエーションを作成するには、Java Platform Enterprise Edition (Java EE) セッション Bean 開発環境を使用して、以下のステップを実行します。
手順
- 空のメディエーション・ハンドラー・プロジェクトを作成します。 これにより、
プロジェクトが作成され、ハンドラー・インターフェースを実装するハンドラー・クラスが作成されます。
この方法の詳細については、メディエーション・ハンドラーの書き込みを参照してください。
- EJB 記述子のメディエーション・ペインを使用して、メディエーション・ハンドラーとしてハンドラー・クラスを定義します。
注: このとき、
既知のメディエーション・ハンドラー・リストの名前を指定します。後でバスにメディエーションを作成するときの参照用に、
この名前を控えておいてください。
- ハンドラーにルーティング機能を追加します。 始める前に、メディエーション機能のハンドラー・コードへの追加の、特にそのサブトピック、メッセージ・コンテキストの使用を確認しておいてください。
ハンドラー・クラスにインポート・ステートメントを追加し、ルーティングのコードを追加してハンドル・メソッドを変更します。
転送ルーティング・パス・リストの先頭にルーティングの宛先を追加することによって、宛先を指定します。
転送ルーティング・パス・リストは、メッセージ・コンテキストから取得できます。以下に例を示します。
import javax.xml.rpc.handler.MessageContext;
import com.ibm.websphere.sib.mediation.handler.MediationHandler;
import com.ibm.websphere.sib.mediation.handler.MessageContextException;
import com.ibm.websphere.sib.mediation.messagecontext.SIMessageContext;
import com.ibm.websphere.sib.SIMessage;
import com.ibm.websphere.sib.SIDestinationAddress;
import com.ibm.websphere.sib.SIDestinationAddressFactory;
import java.util.List;
public class RouteMediationHandler implements MediationHandler {
public boolean handle(MessageContext ctx) throws MessageContextException {
SIMessageContext siCtx = (SIMessageContext) ctx;
SIMessage msg = siCtx.getSIMessage();
List frp = msg.getForwardRoutingPath();
try {
SIDestinationAddress destination =
SIDestinationAddressFactory
.getInstance()
.createSIDestinationAddress(
"RoutingDestination", //this is the name of the target destination
false);
frp.add(0, destination);
} catch (Exception e) {
return false;
}
msg.setForwardRoutingPath(frp);
return true;
}
}
メディエーション・ハンドラー・クラスやメッセージ・コンテキスト・クラスなど、サービス統合テクノロジー・クラスについて 詳しくは、生成 API ドキュメンテーション - アプリケーション・プログラミング・インターフェースを参照してください。
- ルーティング・メディエーション・エンタープライズ・アプリケーションをエクスポートします。
次のタスク
これで、
メディエーションの使用で説明されているように、
WebSphere Application Server にメディエーションをインストールし、バス宛先にそれを関連付ける準備ができました。