14.2. JMS 設定 Bean の使用
概要
JMS 設定を簡素化し、より強力にするために、Apache CXF は単一の JMS 設定 Bean を使用して JMS エンドポイントを設定します。Bean は org.apache.cxf.transport.jms.JMSConfiguration
クラスによって実装されます。エンドポイントを直接設定したり、JMS コンジットと宛先を設定するために使用できます。
設定名前空間
JMS 設定 Bean は、Spring p-namespace を使用して、設定を可能な限り単純にします。この名前空間を使用するには、例14.1「Spring p-namespace の宣言」 のように設定のルート要素で宣言する必要があります。
例14.1 Spring p-namespace の宣言
<beans ... xmlns:p="http://www.springframework.org/schema/p" ... > ... </beans>
設定の指定
クラス org.apache.cxf.transport.jms.JMSConfiguration
の Bean を定義して JMS 設定を指定します。Bean のプロパティーによってトランスポートの設定が提供されます。
CXF 3.0 では、JMS トランスポートは Spring JMS に依存しなくなったため、Spring JMS 関連のオプションの一部が削除されました。
表14.1「一般的な JMS 設定プロパティー」 プロバイダーとコンシューマーの両方に共通するプロパティーをリスト表示します。
プロパティー | デフォルト | 説明 |
---|---|---|
| [必須] JMS ConnectionFactory を定義する Bean への参照を指定します。 | |
|
| CXF3.0 で削除
pre CXF 3.0 では、ConnectionFactory を Spring
JMS トランスポートのパフォーマンスを向上するため、接続をプールしない ConnectionFactory を使用する場合は、このプロパティーを有効にします。これは、JMS トランスポートが各メッセージの新しい接続を作成し、 |
|
| CXF 3.0 で非推奨 CXF は、例外が発生したときに常に再接続します。 以前の CXF3.0 例外が発生したときに新しい接続を作成するかどうかを指定します。
ConnectionFactory を Spring
|
| 宛先の JNDI 名またはプロバイダー固有の名前を指定します。 | |
| 応答の送信先となる JMS 宛先の JMS 名を指定します。このプロパティーでは、応答にユーザー定義の宛先を使用できます。詳細は 「名前付き応答宛先の使用」 を参照してください。 | |
| DynamicDestinationResolver |
Spring このプロパティーにより、宛先名を JMS 宛先に解決する方法を定義できます。有効な値は以下のとおりです。
|
| Spring トランザクションマネージャーへの参照を指定します。これにより、サービスは JTA トランザクションに参加できます。 | |
|
| CXF3.0 で削除 CXF 3.0 より前 の Spring TaskExecutor への参照を指定します。これは、受信メッセージの処理方法を決定するためにリスナーで使用されます。 |
|
| CXF3.0 で削除 CXF3.0 は JMS1.1 機能のみをサポートします。 CXF 3.0 より前 JMS 1.1 機能が使用されるかどうかを指定します。有効な値は以下のとおりです。
|
|
| CXF3.0 で削除 CXF 3.0 より前は、JMS トランスポートが JMS ブローカーにメッセージ ID を提供するかどうかを指定します。有効な値は以下のとおりです。
|
|
| CXF3.0 で削除 CXF 3.0 JMS トランスポートが JMS ブローカーにメッセージタイムスタンプを提供するかどうかを指定します。有効な値は以下のとおりです。
|
|
| CXF3.0 で削除 CXF 3.0 より前 JMS リスナーコンテナーが適用されるキャッシングのレベルを指定します。有効な値は以下のとおりです。
詳細は、Class DefaultMessageListenerContainer を参照してください。 |
|
| トピックの使用時に独自のメッセージを受信するかどうかを指定します。
|
|
| 応答メッセージを待機する時間 (ミリ秒単位) を指定します。 |
|
|
QoS 設定 (優先度、永続性、ライブ時間など) が各メッセージに対して明示的に設定するか ( |
|
| メッセージが永続化されるかどうかを指定します。有効な値は以下のとおりです。
|
|
|
メッセージの優先度を指定します。JMS 優先度の値の範囲は、 |
|
| 送信されたメッセージが破棄されるまでの時間をミリ秒単位で指定します。 |
|
| JMS トランザクションが使用されるかどうかを指定します。 |
|
| CXF3.0 で削除 CXF 3.0 より前 リスナーの同時コンシューマーの最小数を指定します。 |
|
| CXF3.0 で削除 CXF 3.0 より前 リスナーの同時コンシューマーの最大数を指定します。 |
| 受信メッセージのフィルターに使用するセレクターの文字列値を指定します。このプロパティーにより、複数の接続でキューを共有できます。メッセージセレクターを指定するために使用される構文の詳細は、JMS1.1 仕様 を参照してください。 | |
|
| サーバーが永続サブスクリプションを使用するかどうかを指定します。 |
| 永続サブスクリプションの登録に使用される名前 (文字列) を指定します。 | |
|
| メッセージデータを JMS メッセージとしてパッケージ化する方法を指定します。有効な値は以下のとおりです。
|
|
| ターゲットの宛先がトピックであるかキューであるかを指定します。有効な値は以下のとおりです。
|
|
| JMS プロバイダーが Tibco EMS であるかどうかを指定します。
|
|
| CXF3.0 で削除 JMS がメッセージ ID を使用してメッセージを関連付けるかどうかを指定します。
|
|
| CXF 3.0 JMS 宛先が持つ可能性のある一時停止継続の最大数を指定します。現在の数が指定された最大数を超えると、JMSListenerContainer は停止します。 |
|
|
CXF 3.0 は、
リスナーコンテナーは、現在の一時停止された継続回数が |
例14.2「JMS 設定 Bean」 で示されているように、Bean のプロパティーは bean
要素の属性として指定されます。これらはすべて Spring p
namespace で宣言されます。
例14.2 JMS 設定 Bean
<bean id="jmsConfig" class="org.apache.cxf.transport.jms.JMSConfiguration" p:connectionFactory="jmsConnectionFactory" p:targetDestination="dynamicQueues/greeter.request.queue" p:pubSubDomain="false" />
設定をエンドポイントに適用する
JMSConfiguration
Bean は、Apache CXF 機能メカニズムを使用してサーバーとクライアントエンドポイントの両方に直接適用できます。改善点を報告する場合は、以下のように行います。
-
エンドポイントの
address
属性をjms://
に設定します。 -
jaxws:feature
要素をエンドポイントの設定に追加します。 -
org.apache.cxf.transport.jms.JMSConfigFeature
タイプの Bean を機能に追加します。 -
bean
要素のp:jmsConfig-ref
属性をJMSConfiguration
Bean の ID に設定します。
例14.3「JAX-WS クライアントに JMS 設定を追加」 は、例14.2「JMS 設定 Bean」 からの JMS 設定を使用する JAX-WS クライアントを示しています。
例14.3 JAX-WS クライアントに JMS 設定を追加
<jaxws:client id="CustomerService" xmlns:customer="http://customerservice.example.com/" serviceName="customer:CustomerServiceService" endpointName="customer:CustomerServiceEndpoint" address="jms://" serviceClass="com.example.customerservice.CustomerService"> <jaxws:features> <bean xmlns="http://www.springframework.org/schema/beans" class="org.apache.cxf.transport.jms.JMSConfigFeature" p:jmsConfig-ref="jmsConfig"/> </jaxws:features> </jaxws:client>
設定のトランスポートへの適用
JMSConfiguration
Bean は、jmsConfig-ref
要素を使用して JMS コンジェクトおよび JMS 宛先に適用できます。jms:jmsConfig-ref
要素の値は JMSConfiguration
Bean の ID です。
例14.4「JMS コンジットへの JMS 設定の追加」 は、例14.2「JMS 設定 Bean」 の JMS 設定を使用する JMS 輻輳を示しています。
例14.4 JMS コンジットへの JMS 設定の追加
<jms:conduit name="{http://cxf.apache.org/jms_conf_test}HelloWorldQueueBinMsgPort.jms-conduit"> ... <jms:jmsConfig-ref>jmsConf</jms:jmsConfig-ref> </jms:conduit>