SOAP over JMS を使用した Web サービス用永続応答キューの構成
業界標準の SOAP over JMS プロトコルによる双方向の Web サービス通信を使用する場合、Java™ API for XML Web Services (JAX-WS) または Java API for XML-based RPC (JAX-RPC) Web サービス・クライアントで永続応答キューを構成すると便利です。永続応答キューを使用すると、Web サービス要求を呼び出すたびに一時応答キューをクライアントが作成する必要がなくなるため、パフォーマンスが改善されます。
このタスクについて
永続応答キューは、次の方法のいずれかで Web サービス・クライアントに構成されます。
- オプションの replyToName プロパティーを JMS エンドポイント URL で指定します。
- 応答キューをプログラムで設定します。
- JAX-WS Web サービス・クライアントの場合、クライアントの RequestContext オブジェクトでプログラムで応答キューの JNDI 名を設定します。応答キューの JNDI 名を RequestContext オブジェクト上で設定すると、 RequestContext オブジェクトを使用して呼び出される後続のすべての要求に影響があります。
- JAX-RPC Web サービス・クライアントの場合、クライアントの Stub または Call オブジェクトでプログラムで応答キューの JNDI 名を設定します。応答キューの JNDI 名を Stub または Call プロパティーとして設定すると、 その Stub または Call オブジェクトを使用して呼び出される後続のすべての要求に影響があります。
- 応答キューを Java 仮想マシン (JVM) システム・プロパティーとして設定します。 応答キューを JVM システム・プロパティーとして設定すると、特定の JVM で実行される Web サービス・クライアントのすべてに影響があります。複数のクライアントが、同じ JVM で実行されていても、異なる応答キューを使用する必要がある場合は、 このオプションは機能しません。代わりに、他の 2 つのオプションのいずれかを使用します。
これらのオプションのいずれかを使用して永続応答キューを設定する場合、 クライアント・サイドの構成のみが必要になります。Web サービス・プロバイダーの構成は必要ありません。
JMS メッセージング・プロバイダーの標準の管理機能を使用して、Web サービス・クライアントによる応答キューの構成の前に永続応答キューを作成します。
手順
以下のいずれかの方法を使用して、永続応答キューの JNDI 名を構成します。
- オプションの replyToName プロパティーを
JMS エンドポイント URL で、例えば、次のように指定します。
jms:jndi:jms/MyRequestQueue&jndiConnectionFactoryName=jms/MyCF&replyToName=jms/MyReplyQueue
- クライアントで応答キューをプログラムで設定します。プロパティーの値はストリングで、 応答キューの JNDI 名を表します。
- JAX-WS Web サービス・クライアントの場合、クライアント JAX-WS RequestContext オブジェクトで com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME プロパティーを、例えば、次のように設定します。
((BindingProvider) port).getRequestContext().put (com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME, "jms/MyReplyQueue");
- JAX-RPC Web サービス・クライアントの場合、クライアント JAX-RPC Stub または Call オブジェクトで com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME プロパティーを、例えば、次のように設定します。
((javax.xml.rpc.Stub) stub)._setProperty(com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME, "jms/MyReplyQueue");
- JAX-WS Web サービス・クライアントの場合、クライアント JAX-WS RequestContext オブジェクトで com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME プロパティーを、例えば、次のように設定します。
- JVM システム・プロパティーとして応答キューの JNDI 名を設定します。
- Java クライアント呼び出しの場合、
コマンド・プロンプトで以下のコードを入力します。
java -Dcom.ibm.websphere.webservices.JMSReplyQueueJndiName=jms/MyReplyQueue
- アプリケーション・サーバーで実行中の JVM の場合、以下のアクションを実行します。
Web サービス・クライアント・アプリケーションを実行しているアプリケーション・サーバーの管理コンソールを使用して JVM システム・プロパティーを設定します。
カスタム・プロパティーを設定するには、管理コンソールにログオンし、Java 仮想マシンのカスタム・プロパティー・パネルにナビゲートします。
- とクリックします。
- 「Name」プロパティーに com.ibm.websphere.webservices.JMSReplyQueueJndiName を設定します。
- 「Value」プロパティーに jms/Permanent_Q を設定します。
- 変更を保存する場合は、「OK」をクリックします。
- 「変更をノードと同期する」をクリックして、「保存」をクリックします。
- アプリケーション・サーバーを再始動します。
- Java クライアント呼び出しの場合、
コマンド・プロンプトで以下のコードを入力します。
タスクの結果
これで、Web サービス・クライアントが永続応答キューからの SOAP over JMS メッセージを受信できるようになりました。