SOAP over JMS を使用した Web サービスのトランスポート

クライアントとサーバー間の SOAP メッセージ通信用の SOAP over HTTP の代替手段として、SOAP over Java™ Message Service (JMS) トランスポート・プロトコルを使用することができます。

始める前に

JMS トランスポートを通じてアクセスするには、 Web サービスをエンタープライズ Bean として実装する必要があります。

このタスクについて

この製品は、新しい業界標準の SOAP over JMS プロトコルを サポートしています。SOAP over JMS 仕様 では、SOAP メッセージを送信する JMS 準拠トランスポートの使用に関するインターオペラビリティー・ガイドラインの標準セットが提供され、異なるベンダーの実装間でのインターオペラビリティーを可能にします。この標準を使用すると、Java API for XML Web サービス (JAX-WS) と Java API for XML-based RPC (JAX-RPC) Web サービスの両方について、JMS トランスポート上で SOAP 要求と応答メッセージを交換する際に、さまざまなベンダーからのクライアントとサーバー・コンポーネントの混合を相互運用できるようになります。JMS トランスポートを使用することにより、エンタープライズ Bean ベースの Web サービス・クライアントおよびサーバーは、HTTP 接続の代わりに JMS キューおよびトピックを介して通信することができます。

非推奨の機能 (Deprecated feature) 非推奨の機能 (Deprecated feature): アプリケーション・サーバーの前のバージョンでは、IBM® 専有の SOAP over JMS プロトコルが、 Java API for XML-based RPC (JAX-RPC) アプリケーション用にサポートされていました。 WebSphere® Application Server 7.0 以降では、新しい業界標準の SOAP over JMS プロトコルが導入されているため、この専有の SOAP over JMS プロトコルは推奨されなくなりました。IBM 専有の SOAP over JMS プロトコルを Java API for XML Web Services (JAX-WS) や JAX-RPC Web サービスで使用することはできますが、新しい標準の SOAP over JMS プロトコルを利用してください。ご使用のクライアント・アプリケーションが、 前のバージョンの WebSphere Application Server でサポートされるエンタープライズ Bean ベースの Web サービスを呼び出す場合は、引き続き IBM 専有の SOAP over JMS プロトコルを使用して、これらの Web サービスにアクセスする必要があります。depfeat
JMS を使用する利点としては、以下のようなものがあります。
  • 要求および応答メッセージ通信用の信頼性の高いメッセージング・トランスポート。
  • クライアントおよびサーバーのための柔軟な片方向要求。例えば、クライアントが片方向要求を送信するときにサーバーがアクティブになっている必要はありません。トピックを使用して、片方向要求を複数のサーバーに同時に送信することができます。
  • 同期した両方向の要求は、Java API for XML-Based Web Services (JAX-WS) および Java API for XML-based RPC (JAX-RPC) の両方のクライアントでサポートされています。
  • 非同期要求は JAX-WS クライアントでサポートされます。

SOAP over JMS 仕様において、 JMS 宛先を指定する JMS エンドポイント URI 構文が定義されます。JMS エンドポイント URL は、 JMS トランスポートを使用して JAX-WS または JAX-RPC Web サービスにアクセスするために使用されます。この URL は、Web サービス要求のポート・コンポーネント名 のほか、JMS 宛先と接続ファクトリーを指定します。これは、 ホストとポートに加えてコンテキスト・ルートとポート・コンポーネント名も指定する HTTP エンドポイント URL に似ています。

手順

  1. サービス実装 Bean として使用するエンタープライズ Bean を作成します。
  2. JAX-WS アプリケーションの場合は、@BindingType アノテーションをエンドポイント実装クラスに追加し、ご使用のエンドポイントの SOAP over JMS バインディング ID を指定します。 以下に例を示します。
    @WebService 
    @BindingType("http://www.w3.org/2010/soapjms/")
    public class MyServiceBeanImpl {
        ...
    }

    @BindingType アノテーションを使用して、エンドポイントに関する要求メッセージと応答メッセージの送信時に使用するプロトコル (SOAP) とトランスポート (JMS) を示します。

  3. エンタープライズ Bean をアセンブルします。
    1. エンタープライズ Bean から、Web サービスに 対応する JAR ファイルをアセンブルします Web サービスのエンタープライズ Bean モジュールを使用可能にするために必要な成果物を、Java アーカイブ (JAR) ファイルにアセンブルすることができます。
    2. Web サービス対応エンタープライズ Bean JAR ファイルをエンタープライズ・アーカイブ (EAR) ファイルにアセンブルします Web サービス対応 JAR ファイルを使用可能にするのに必要な成果物をアセンブルして EAR ファイルに入れることができます。
  4. endptEnabler コマンドを使用して、エンタープライズ Bean ベースのエンドポイントを使用可能にします。 -transport jms オプションを使用して、Web サービス実装 Bean を含むエンタープライズ JavaBeans (EJB) JAR ファイルのそれぞれに対して、endptEnabler コマンドによりメッセージ駆動型 Bean (MDB) リスナーが作成されるように要求します。このメッセージ駆動型 Bean は、 EJB JAR ファイルに含まれる Web サービス・エンドポイントに関連付けられた要求に対するリスナーとして 動作します。
  5. アプリケーションで使用する JMS オブジェクトの名前とタイプを決定します。

    アプリケーションをインストールする前に、以下のことを行う必要があります。

    • Web サービスがキューまたはトピックから要求を受信するかどうかを決定します。
      • セキュアな宛先または非セキュアな宛先のいずれを使用するかを決定します。
      • キューとトピック、接続ファクトリーとアクティベーション・スペックの名前を決定します。
    JMS オブジェクト名およびタイプを決定するには、以下の ガイドラインを使用します。一般的には、Web サービス要求を受信するために キューを使用することができます。
    • キュー
      • キューはすべてのタイプの要求を受信します。有効な要求には、片方向、 双方向、および同期があります。非同期要求は JAX-WS Web サービスでのみ有効です。
      • キューは、EJB JAR ファイルに含まれる Web サービス・エンドポイントに対する要求を受信する場合に、単一の EJB JAR ファイルでのみ使用されます。
    • トピック
      • トピックは、片方向要求受信専用に使用されます。
      • 複数の EJB JAR ファイルで 1 つのトピックを共有することができます。トピックに送信される 各要求メッセージは、そのトピックを listen するように構成された各 MDB リスナーによって処理されます。これは、各要求メッセージがその特定のトピックに関連付けられた各 EJB JAR ファイルによって処理されることを意味します。

    以下の例では、Web サービス・エンドポイントを含む単一の EJB JAR ファイル用の標準的な構成について説明します。

    • EJB JAR ファイルが StockQuoteEJB.jar で、 StockQuote サービスに関連する 1 つ以上の Web サービス・エンドポイントを含んでいると仮定します。
    • 要求の受信に使用する、JNDI 名が jms/StockQuote_Q の StockQuote_Q という単一キューが存在します。
    • JMS プロバイダーに接続する際にクライアントによって使用可能な、JNDI 名が jms/StockQuote_CF の StockQuote_CF という接続ファクトリーが存在します。
    • 応答メッセージの送信時に JMS プロバイダーに接続する際に EJB JAR ファイルの MDB リスナーによって使用される、JNDI 名が jms/StockQuote_ReplyCF の StockQuote_ReplyCF という接続ファクトリーも存在します。
    • StockQuoteEJB.jar の MDB リスナーを StockQuote_Q という名前のキューに関連付けるのに使用される、jms/StockQuote_AS という JNDI 名を持つアクティベーション・スペック StockQuote_AS が存在します。
  6. JMS で管理されるオブジェクトを定義します

    JMS オブジェクトの名前とタイプを決定したら、 管理コンソールまたは wsadmin スクリプト・ツールを使用して JMS オブジェクトを定義します。 使用する JMS プロバイダーのタイプに応じて、JMS リソースは複数の方法で管理されます。 JMS リソースの管理について詳しくは、メッセージング・プロバイダーの選択に関する項目を参照してください。

  7. Web サービス・アプリケーションをデプロイします
    インストール・プロセス中に、EAR ファイルに含まれる Web サービス対応エンタープライズ Bean JAR ファイル ごとに、2 種類の情報を求めるプロンプトが出されます。
    • 応答メッセージを送信する際に使用する、MDB リスナーによって使用される接続ファクトリーの JNDI 名。

      Web サービスに双方向操作が含まれている場合、 endptEnabler コマンドによって定義された MDB リスナーは、 応答キューに応答メッセージを追加するために、キュー接続ファクトリーにアクセスする必要があります。 MDB リスナーは、java:comp/env/jms/WebServicesReplyQCF のリソース環境参照を使用します。したがって、アプリケーションのインストール・プロセス中に、MDB リスナーが Web サービスに使用する接続ファクトリーの実際の JNDI 名を提供する必要があります。前述の例を使用すると、JNDI 名は jms/StockQuote_ReplyCF になります。

    • MDB リスナーが使用するアクティベーション・スペックの名前。

      アクティベーション・スペックとは、 JMS 接続ファクトリーを JMS 宛先 (キューまたはトピック) に関連付ける際に使用される オブジェクトのことです。デプロイ時に、 キューまたはトピックからのメッセージが MDB に正しく送信されるように、適切なアクティベーション・スペックを使用して MDB が構成されます。デプロイメント中、各 MDB リスナーに関連付けられているアクティベーション・スペックの名前を変更することができます。 入力 EAR ファイルに含まれているアクティベーション・スペック名がデフォルト値として表示されます。 endptEnabler コマンドに適切なアクティベーション・スペック名を指定した場合は、 デフォルト値を受け入れることができます。それ以外の場合は、適切なアクティベーション・スペック名を 入力します。

  8. 新しい業界標準の SOAP over JMS プロトコル、または IBM 専有 SOAP/JMS プロトコルのいずれを使用するかを決定します。
    ベスト・プラクティス ベスト・プラクティス: 業界標準 SOAP/JMS プロトコルを使用することをお勧めします。IBM 専有 SOAP/JMS プロトコルはこのリリースでは非推奨です。ただし、アプリケーションを以前のバージョンの製品と同時に使用する必要がある場合は、専有プロトコルを使用してください。bprac
    • 業界標準の SOAP over JMS プロトコルを使用する場合は、JMS バインディングのエンドポイント URL 情報の 構成タスクを使用して、標準に関連付けられている JMS エンドポイント URL 構文に 準拠した JMS エンドポイント URI 接頭部を指定します。例えば、以下のようにします。
      jms:jndi:jms/StockQuote_Q&jndiConnectionFactoryName=jms/StockQuote_CF
    • IBM 専有 SOAP over JMS プロトコルを使用する場合は、JMS バインディングのエンドポイント URL 情報の 構成タスクを使用して、IBM 専有 SOAP over JMS プロトコルに準拠した JMS エンドポイント URL 接頭部を指定します。例えば、以下のようにします。
      jms:/queue?destination=jms/StockQuote_Q&connectionFactory=jms/StockQuote_CF
  9. (オプション) JMS バインディングのエンドポイント URL 情報を構成します

    管理コンソールを使用して、 アプリケーション内で各 EJB JAR モジュールに関連付けることのできる JMS エンドポイント URL 接頭部を構成します。WSDL パブリッシャーは、この部分的な URL ストリングを使用して、エンタープライズ Bean JAR ファイル で定義されている各ポート・コンポーネントの実際の JMS URL を生成します。Web サービスの呼び出しを必要とするクライアントは、 公開された WSDL ファイルを使用することができます。

    このステップは、アプリケーションの WSDL ファイルを公開する場合にのみ、実行してください。

  10. (オプション) アプリケーションの WSDL ファイルを公開します

    WSDL ファイルを公開すると、クライアント・アプリケーションを作成する際に使用可能な WSDL 文書が作成されます。公開プロセスにより、WSDL ファイル内に完全解決済みのエンドポイント・ロケーション URL が生成されます。

    このステップは、クライアント・アプリケーションの作成に公開済み WSDL ファイルが必要な場合にのみ、実行してください。

タスクの結果

Web サービスが、SOAP over JMS を使用して要求をトランスポートするように構成されました。

次のタスク

Web サービス・クライアントを開発します。


トピックのタイプを示すアイコン タスク・トピック



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_soapjmstransportwbs
ファイル名:twbs_soapjmstransportwbs.html