メッセージ・コンテキストの使用
メッセージが仲介される方法に影響を与えるメッセージ・プロパティーを使用できます。
始める前に
このタスクについて
インターフェース SIMessageContext は、スーパーインターフェース MessageContext を持っています。 MessageContext のメソッドを使用すると、メッセージ・プロパティーのセットを管理できます。これにより、ハンドラー・チェーン内のハンドラーが、処理関連の状態を共有できるようになります。もっとも重要な点は、メソッド getProperty を使用すると、MessageContext から特定のプロパティーの値を取得でき、メソッド setProperty を使用すると、MessageContext に関連付けられているプロパティーの名前および値を設定できることです。また、この MessageContext のプロパティーの名前を表示したり、 MessageContext からプロパティー (名前と値のペア) を除去することもできます。
メディエーション実行時には、 現在のメディエーションの構成中に設定されたユーザー定義のすべてのプロパティー (メディエーション・コンテキスト・プロパティーの構成を参照) が MediationContext プロパティー・セットに適用されます。
手順
- メソッド handle (MessageContext context) 内で、ファンクション・メディエーション・コードを挿入するメディエーション・ハンドラー内のポイントを位置指定します。 メッセージ・プロパティーにアクセスするのに MessageContext メソッドを使用する場合は、 SIMessageContext で提供されるメソッドにも関与する場合以外は、 インターフェースを SIMessageContext にキャストする必要はありません。
- SIMessage を MessageContext オブジェクトから取得します。例えば、SIMessage message = ((SIMessageContext)context).getSIMessage();
- MessageContext メソッドを使用して、プロパティーを検索、または設定します。例えば、 プロパティーが構成時に、 名前が streetName、タイプが String、値が「Main Street」で定義されていた場合、street name を検索し印刷するためのコードは以下のようになります。
例
public boolean handle(MessageContext context) throws MessageContextException {
........
{
/* Retrieve the street name property */
String myStreetName;
myStreetName = (String) getProperty(streetName);
/* Display property value */
System.out.println(myStreetName);
}
}