42.4.3. JMS プロパティーの設定


概要

コンシューマーエンドポイントでリクエストコンテキストを使用すると、JMS メッセージヘッダープロパティーの数とコンシューマーエンドポイントのタイムアウト値を設定できます。これらのプロパティーは、1 回の呼び出しで有効です。サービスプロキシーで操作を呼び出すたびに、それらをリセットする必要があります。

サービスにヘッダープロパティーを設定することはできないことに注意してください。

JMS ヘッダーのプロパティー

表42.4「設定可能な JMS ヘッダープロパティー」 は、コンシューマーエンドポイントのリクエストコンテキストを使用して設定できる JMS ヘッダーのプロパティーを一覧表示します。

表42.4 設定可能な JMS ヘッダープロパティー
プロパティー名プロパティータイプセッターメソッド

相関 ID

string

setJMSCorralationID()

配信モード

int

setJMSDeliveryMode()

優先度

int

setJMSPriority()

有効期間

long

setTimeToLive()

これらのプロパティーを設定するには、次のようにします。

  1. org.apache.cxf.transports.jms.context.JMSMessageHeadersType オブジェクトを作成します。
  2. 表42.4「設定可能な JMS ヘッダープロパティー」 で説明されている適切なセッターメソッドを使用して、設定する値を入力します。
  3. org.apache.cxf.transports.jms.JMSConstants.JMS_CLIENT_REQUEST_HEADERS を第 1 引数として、新しい JMSMessageHeadersType オブジェクトを第 2 引数として使用してリクエストコンテキストの put() メソッドを呼び出すことで、値をリクエストコンテキストに設定します。

オプションの JMS ヘッダープロパティー

オプションのプロパティーを JMS ヘッダーに設定することもできます。オプションの JMS ヘッダープロパティーは、他の JMS ヘッダープロパティーを設定するために使用される JMSMessageHeadersType オブジェクトに保存されます。それらは、org.apache.cxf.transports.jms.context.JMSPropertyType オブジェクトが含まれる List オブジェクトとして保存されます。オプションのプロパティーを JMS ヘッダーに追加するには、次の手順を実行します。

  1. JMSPropertyType オブジェクトを作成します。
  2. setName() を使用して、プロパティーの name フィールドを設定します。
  3. setValue() を使用して、プロパティーの value フィールドを設定します。
  4. JMSMessageHeadersType.getProperty().add(JMSPropertyType) を使用して、JMS メッセージヘッダーにプロパティーを追加します。
  5. すべてのプロパティーがメッセージヘッダーに追加されるまで、この手順を繰り返します。

クライアント受信タイムアウト

JMS ヘッダーのプロパティーに加えて、コンシューマーエンドポイントがタイムアウトする前に応答を待機する時間を設定できます。org.apache.cxf.transports.jms.JMSConstants.JMS_CLIENT_RECEIVE_TIMEOUT を第 1 引数として、コンシューマーが待機するミリ秒単位の時間を表す long を第 2 引数としてリクエストコンテキストの put() メソッドを呼び出すことで、値を設定します。

例42.15「リクエストコンテキストを使用した JMS プロパティーの設定」 は、リクエストコンテキストを使用していくつかの JMS プロパティーを設定するためのコードを示しています。

例42.15 リクエストコンテキストを使用した JMS プロパティーの設定

import org.apache.cxf.transports.jms.context.*;
 // Proxy greeter initialized previously
InvocationHandler handler = Proxy.getInvocationHandler(greeter);

BindingProvider bp= null;
if (handler instanceof BindingProvider)
{
  bp = (BindingProvider)handler;
  Map<String, Object> requestContext = bp.getRequestContext();

  JMSMessageHeadersType requestHdr = new JMSMessageHeadersType();
  requestHdr.setJMSCorrelationID("WithBob");
  requestHdr.setJMSExpiration(3600000L);


  JMSPropertyType prop = new JMSPropertyType;
  prop.setName("MyProperty");
  prop.setValue("Bluebird");
  requestHdr.getProperty().add(prop);

  requestContext.put(JMSConstants.CLIENT_REQUEST_HEADERS, requestHdr);

  requestContext.put(JMSConstants.CLIENT_RECEIVE_TIMEOUT, new Long(1000));
}

例42.15「リクエストコンテキストを使用した JMS プロパティーの設定」 のコードは、以下を行います。

JMS プロパティーを変更するプロキシーの InvocationHandler を取得する。

InvocationHandlerBindingProvider であるかどうかを確認する。

返された InvocationHandler オブジェクトを BindingProvider オブジェクトにキャストし、リクエストコンテキストを取得する。

リクエストコンテキストを取得します。

JMSMessageHeadersType オブジェクトを作成し、新しいメッセージヘッダーの値を保持する。

相関 ID を設定します。

エクスパレーションプロパティーを 60 分に設定します。

新しい JMSPropertyType オブジェクトを作成する。

オプションのプロパティーの値を設定します。

オプションのプロパティーをメッセージヘッダーに追加します。

JMS メッセージヘッダー値をリクエストコンテキストに設定します。

クライアントの受信タイムアウトプロパティーを 1 秒に設定します。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.