WebSphere Application Server は Java Message Service (JMS) API の使用をサポートし、
HTTP の代替として、Web サービス要求をトランスポートします。
JMS トランスポートを使用することで、Java API for XML-based RPC (JAX-RPC) ベースの Web サービスのクライアントとサーバーは、
HTTP 接続の代わりに JMS キューとトピックを介して通信することができます。
片方向要求および同期両方向要求がサポートされます。
始める前に
JMS トランスポートを通じてアクセスできるようにするには、
JAX-RPC Web サービスをエンタープライズ Bean としてインプリメントする必要があります。
API の完全なリストについては、
API documentation を検討してください。
また、Web サービス:
学習用リソースにある Web サービスの開発についての項目も検討します。
このタスクについて
JMS を使用する利点としては、以下のようなものがあります。
- 要求および応答メッセージのための信頼できるメッセージング。
- クライアントおよびサーバーのための柔軟な片方向要求。例えば、クライアントが片方向要求を送信するときにサーバーがアクティブになっている必要はありません。
- トピックを使用して、片方向要求を複数のサーバーに同時に送信することができます。
片方向要求をトランザクションによって送信するために Web サービス・クライアント・アプリケーションを構成するには、を参照してください。
このタスクは、Web サービスの開発またはインプリメントが終了してから実行してください。
このタスクでは、JMS を使用して要求をトランスポートするように Web サービスを構成する方法について説明します。
JMS をトランスポートとして使用するように Web サービスを構成するには、次のようにします。
プロシージャー
- JMS バインディングと SOAP アドレスを
Web サービス記述言語 (WSDL) ファイルに追加します。
JMS トランスポート上でのアクセスを可能にするには、Web サービスの WSDL ファイルに、JMS バインディングと、
JMS エンドポイントの URL ストリングを指定する SOAP アドレスが含まれている必要があります。
JMS バインディングは wsdl:binding エレメントで、このエレメントには、
トランスポート属性が通常の soap/http 値ではなく soap/jms で終わる wsdlsoap:binding エレメントが含まれています。
JMS バインディングに加えて、JMS バインディングを参照する wsdl:port エレメントが、
WSDL ファイル内の wsdl:service エレメントに含まれている必要があります。wsdl:port エレメントには、
ロケーション属性が JMS エンドポイントの URL ストリングを指定する wsdlsoap:address エレメントが含まれています。
実際の JMS エンドポイント URL ストリングの指定は、
JMS バインディングのエンドポイント URL 情報を構成するまで、据え置くことができます。
Web サービスの開発時に、エンドポイント
URL ストリングとして file:/unspecified_location などのプレースホルダーを使用することができます。
- アプリケーションで使用する JMS オブジェクトの名前とタイプを決定します。
アプリケーションをインストールする前に、以下のことを行う必要があります。
- Web サービスがキューまたはトピックから要求を受信するかどうかを決定します。
- セキュアな宛先 (キューやトピックなど) と非セキュアな宛先のどちらを使用するかを決定します。
- 宛先、接続ファクトリー、およびリスナー・ポートの名前を決定します。
以下のリストに、StockQuote Web サービスに使用される名前の例を示します。
- キュー: StockQuote_Q (Java Naming and Directory Interface (JNDI) 名: jms/StockQuote_Q)
- 接続ファクトリー: StockQuote_CF (JNDI 名: jms/StockQuote_CF)
- リスナー・ポート: StockQuoteEJB_ListenerPort
- JMS で管理されるオブジェクトを定義します。
JMS オブジェクトの名前とタイプを決定したら、
管理コンソールまたは wsadmin スクリプト・ツールを使用して JMS オブジェクトを定義します。
使用する JMS プロバイダーのタイプに応じて、JMS リソースはさまざまな方法で管理することができます。
詳しくは、一般プロバイダーの JMS リソースの使用を参照してください。
- endptEnabler コマンドを使用して、
エンタープライズ・アーカイブ (EAR) ファイルに JMS エンドポイントを追加します。
EAR ファイルに含まれる Web サービス対応エンタープライズ Bean Java アーカイブ (JAR) ファイル
ごとに、endptEnabler コマンドを実行して JMS エンドポイントまたはルーター・モジュールを追加する必要があります。
デフォルトでは、endptEnabler コマンドは HTTP エンドポイントだけを追加しますが、
-transport jms コマンド・オプションを使用して JMS エンドポイントの追加を要求することができます。
- JMS 接続のセキュリティーを構成します。
セキュア JMS 接続にするには、
basicAuth アセンブリー・プロパティーを ibm-webservicesclient-bnd.xmi デプロイメント記述子ファイルに追加します。
ユーザー ID およびパスワードの属性を設定します。
basicAuth プロパティーが
ibm-webservicesclient-bnd.xmi デプロイメント記述子ファイルに提供されていない場合は、JMS プロバイダーのセキュリティー構成によって、JMS 接続はリジェクトされることがあります。
- Web サービス・アプリケーションをデプロイします。
インストール・プロセス中に、EAR ファイルに含まれる Web サービス対応エンタープライズ Bean JAR ファイル
ごとに、2 種類の情報を求めるプロンプトが出されます。
- 応答メッセージを送信するためにエンタープライズ Bean JAR ファイル・メッセージ駆動型 Bean (MDB) リスナーで使用される接続ファクトリーの JNDI 名。
Web サービスに双方向操作が含まれている場合、
endptEnabler コマンドで追加された JMS エンドポイント内で定義されている MDB リスナーは、
応答キューに応答メッセージを追加するために、キュー接続ファクトリーにアクセスする必要があります。
クライアントで を行えば、Web サービス要求が行われるたびに Web サービス・クライアントが JMS メッセージの replyTo プロパティーを設定しなくてもよいので便利です。
MDB リスナーは、java:comp/env/jms/WebServicesReplyQCF
のリソース環境参照を使用します。したがって、アプリケーションのインストール・プロセス中に、
その Web サービスの MDB リスナーで使用する必要のあるキュー接続ファクトリーの、
実際の JNDI 名を提供する必要があります。クライアントで使用するためにステップ 2
で定義したのと同じ接続ファクトリーを使用することができます。
- MDB リスナーが使用するリスナー・ポートの名前。
リスナー・ポートは、
JMS 接続ファクトリーを JMS 宛先 (キューまたはトピック) と関連付けるために使用されるオブジェクトです。デプロイ時に、
MDB は、キューまたはトピックからのメッセージが MDB に正しく配信されるように、適切なリスナー・ポートで構成されます。
デプロイメント時に、各 MDB リスナーと関連付けられているリスナー・ポートの名前を変更することができます。
入力 EAR ファイルに含まれているリスナー・ポート名がデフォルト値として表示されます。
endptEnabler コマンドに適切なリスナー・ポート名を指定した場合は、
デフォルト値を受け入れることができます。それ以外の場合は、適切なリスナー・ポート名を入力します。
ヒント: デフォルトでは、endptEnabler コマンドは、<ejb-jar-name>_ListenerPort の形式でリスナー・ポート名を生成します。このステップを単純化するために、ステップ 2
ではこの命名規則に従ってリスナー・ポートを定義します。
- JMS バインディングのエンドポイント URL 情報を構成します。
WSDL パブリッシャーは、この部分的な URL ストリングを使用して、エンタープライズ Bean JAR ファイル
で定義されている各ポート・コンポーネントの実際の JMS URL を生成します。
公開された WSDL ファイルは、Web サービスの呼び出しを必要とするクライアントで使用できます。
結果
Web サービスが、JMS を使用して要求をトランスポートするように構成されました。