13.3. WSDL 拡張機能
概要
バインディングスコープ、サービススコープ、またはポートスコープのいずれかで WSDL 拡張要素をコントラクトに挿入することにより、JMS トランスポートの基本設定を指定できます。WSDL 拡張機能を使用すると、JNDI InitialContext
ブートストラップのプロパティーを指定でき、JMS 宛先の検索に使用できます。JMS トランスポート層の動作に影響を与えるプロパティーの一部を設定することもできます。
SOAP/JMS namespace
SOAP/JMS WSDL エクステンションは、http://www.w3.org/2010/soapjms/
namespace で定義されます。WSDL コントラクトでそれらを使用するには、次の設定を wsdl:definitions
要素に追加します。
<wsdl:definitions ... xmlns:soapjms="http://www.w3.org/2010/soapjms/" ... >
WSDL 拡張要素
表13.4「SOAP/JMS WSDL extension 要素」 は、JMS トランスポートの設定に使用できる WSDL 拡張要素すべてを示しています。
要素 | デフォルト | 説明 |
---|---|---|
|
JNDI プロバイダーの完全修飾 Java クラス名を指定します。 | |
|
JNDI プロバイダーを初期化する URL を指定します。 | |
|
JNDI | |
| JMS 接続ファクトリーの JNDI 名を指定します。 | |
|
|
JMS |
|
[任意] キューメッセージの応答先を指定します。応答宛先が このプロパティーの値は、JMS URI で指定されたバリアントに従って解釈されます。
| |
|
| 0(最低) から 9(最高) の範囲の JMS メッセージ優先度を指定します。 |
|
|
ミリ秒単位の時間。その後、JMS プロバイダーはメッセージを破棄します。 |
設定スコープ
WSDL コントラクトに WSDL エレメントを配置すると、コントラクトで定義されたエンドポイントの設定変更のスコープに影響します。SOAP/JMS WSDL 要素は、wsdl:binding
要素、wsdl:service
要素、または wsdl:port
要素のいずれかの子として配置できます。SOAP/JMS 要素の親は、設定が配置されるスコープを次のスコープのどれに決定するかを決定します。
- バインディングスコープ
-
wsdl:binding
要素内にエクステンション要素を配置することで、バインディングスコープ で JMS トランスポートを設定できます。このスコープの要素は、このバインディングを使用するすべてのエンドポイントのデフォルト設定を定義します。バインディングスコープの設定は、サービススコープまたはポートスコープで上書きできます。 - サービス範囲
-
wsdl:service
要素内に extension 要素を配置することで、service scopeで JMS トランスポートを設定できます。このスコープの要素は、このサービスのすべてのエンドポイントのデフォルト設定を定義します。サービススコープの設定は、ポートスコープで上書きできます。 - ポートのスコープ
-
wsdl:port
要素内に extension 要素を配置することで、ポートスコープで JMS トランスポートを設定できます。ポートスコープの要素は、このポートの設定を定義します。これらは、サービススコープまたはバインディングスコープで定義された同じ拡張要素のデフォルトをオーバーライドします。
例
例13.9「SOAP/JMS 設定との WSDL コントラクト」 は、SOAP/JMS サービスの WSDL コントラクトを示しています。バインディングスコープで JNDI レイヤーを設定し、サービススコープでメッセージ配信の詳細を設定し、ポートスコープで応答先を設定します。
例13.9 SOAP/JMS 設定との WSDL コントラクト
<wsdl:definitions ... xmlns:soapjms="http://www.w3.org/2010/soapjms/" ... > ... <wsdl:binding name="JMSGreeterPortBinding" type="tns:JMSGreeterPortType"> ... <soapjms:jndiInitialContextFactory> org.apache.activemq.jndi.ActiveMQInitialContextFactory </soapjms:jndiInitialContextFactory> <soapjms:jndiURL>tcp://localhost:61616</soapjms:jndiURL> <soapjms:jndiConnectionFactoryName> ConnectionFactory </soapjms:jndiConnectionFactoryName> ... </wsdl:binding> ... <wsdl:service name="JMSGreeterService"> ... <soapjms:deliveryMode>NON_PERSISTENT</soapjms:deliveryMode> <soapjms:timeToLive>60000</soapjms:timeToLive> ... <wsdl:port binding="tns:JMSGreeterPortBinding" name="GreeterPort"> <soap:address location="jms:jndi:dynamicQueues/test.cxf.jmstransport.queue" /> <soapjms:replyToName> dynamicQueues/greeterReply.queue </soapjms:replyToName> ... </wsdl:port> ... </wsdl:service> ... </wsdl:definitions>
例13.9「SOAP/JMS 設定との WSDL コントラクト」 の WSDL は以下を行います。
SOAP/JMS エクステンションの namespace を宣言します。
バインディングスコープで JNDI 接続を設定します。
JMS 配信スタイルを非永続に設定し、各メッセージを 1 分間存続させます。
ターゲットの宛先を指定します。
応答メッセージが greeterReply.queue
キューで配信されるように JMS トランスポートを設定します。