Menu Close
第13章 SOAP Over JMS の使用
概要
Apache CXF は、W3C 標準 SOAP/JMS トランスポートを実装します。この標準は、SOAP/HTTP サービスより堅牢な方法を提供することを目的としています。このトランスポートを使用する Apache CXF アプリケーションは、SOAP/JMS 標準を実装するアプリケーションと相互運用できる必要があります。トランスポートはエンドポイントの WSDL に直接設定されます。
注記: JMS 1.0.2 API のサポートは CXF 3.0 で削除されました。Red Hat JBoss Fuse 6.2 以降 (CXF 3.0 を含む) を使用している場合、JMS プロバイダーは JMS 1.1 API をサポートする必要があります。
13.1. 基本設定
概要
SOAP over JMS プロトコル は、ほとんどのサービスで使用される慣習的な SOAP/HTTP プロトコルに、より信頼性の高いトランスポート層を提供する方法として、World Wide Web Consortium (W3C) によって定義されています。Apache CXF の実装は、仕様に完全に準拠しており、準拠しているフレームワークと互換性があるはずです。
このトランスポートは JNDI を使用して JMS 宛先を検索します。操作が呼び出されると、リクエストは SOAP メッセージとしてパッケージ化され、JMS メッセージのボディーで指定の宛先に送信されます。
SOAP/JMS トランスポートを使用するには、以下を実行します。
- トランスポート型が SOAP/JMS であることを指定します。
- JMS URI を使用してターゲット宛先を指定します。
- 必要に応じて、JNDI 接続を設定します。
- 必要に応じて、JMS 設定をさらに追加します。
JMS トランスポート型の指定
WSDL バインディングを指定する際に、SOAP バインディングが JMS トランスポートを使用するように設定します。soap:binding
要素の transport
属性を http://www.w3.org/2010/soapjms/
に設定します。例13.1「SOAP over JMS バインディングの指定」 は、SOAP/JMS を使用する WSDL バインディングを示しています。
例13.1 SOAP over JMS バインディングの指定
<wsdl:binding ... > <soap:binding style="document" transport="http://www.w3.org/2010/soapjms/" /> ... </wsdl:binding>
ターゲット宛先の指定
エンドポイントの WSDL ポートを指定するときに JMS ターゲット宛先のアドレスを指定します。SOAP/JMS エンドポイントのアドレス指定では、SOAP/HTTP エンドポイントと同じ soap:address
要素および属性を使用します。違いはアドレスの指定です。JMS エンドポイントは、JMS 1.0 の URI スキーム で定義された JMS URI を使用します。例13.2「JMS URI 構文」 は、JMS URI の構文を示しています。
例13.2 JMS URI 構文
jms:variant:destination?options
表13.1「JMS URI バリアント」 で、JMS URI で使用できるバリアントを説明します。
表13.1 JMS URI バリアント
バリアント | 説明 |
---|---|
jndi | 宛先名が JNDI キュー名であることを指定します。このバリアントを使用する場合は、JNDI プロバイダーにアクセスするための設定を指定する必要があります。 |
jndi-topic | 宛先名が JNDI トピック名であることを指定します。このバリアントを使用する場合は、JNDI プロバイダーにアクセスするための設定を指定する必要があります。 |
queue |
宛先が JMS を使用して解決されるキュー名であることを指定します。指定の文字列は |
topic |
宛先が JMS を使用して解決されるトピック名であることを指定します。指定の文字列は |
JMS URI の オプション 部分はトランスポートの設定に使用され、「JMS URI」 で説明されています。
例13.3「SOAP/JMS エンドポイントアドレス」 は、JNDI を使用してターゲット宛先が検索される SOAP/JMS エンドポイントの WSDL ポートエントリーを示しています。
例13.3 SOAP/JMS エンドポイントアドレス
<wsdl:port ... > ... <soap:address location="jms:jndi:dynamicQueues/test.cxf.jmstransport.queue" /> </wsdl:port>
JNDI と JMS トランスポートの設定
SOAP/JMS には、JNDI コネクションと JMS トランスポートを設定するための複数の方法が用意されています。