Menu Close
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 エクステンション要素」 は、JMS トランスポートを設定するために使用できる WSDL エクステンション要素をすべて示しています。
表13.4 SOAP/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 要素の親によって、設定が配置されるスコープが次のうちどれであるかが決まります。
- バインディングスコープ
-
バインディングスコープ で JMS トランスポートを設定するには、エクステンション要素を
wsdl:binding
要素内に配置します。このスコープの要素は、このバインディングを使用するすべてのエンドポイントのデフォルト設定を定義します。バインディングスコープの設定は、サービススコープまたはポートスコープで上書きできます。 - サービススコープ
-
サービススコープ で JMS トランスポートを設定するには、エクステンション要素を
wsdl:service
要素内に配置します。このスコープの要素は、このサービス内のすべてのエンドポイントのデフォルト設定を定義します。サービススコープの設定は、ポートスコープで上書きできます。 - ポートスコープ
-
ポートスコープ で JMS トランスポートを設定するには、エクステンション要素を
wsdl:port
要素内に配置します。ポートスコープの要素は、このポートの設定を定義します。これらは、サービススコープまたはバインディングスコープで定義されている同じエクステンション要素のデフォルトを上書きします。
例
例13.9「WSDL コントラクトと SOAP/JMS 設定」 は、SOAP/JMS サービスの WSDL コントラクトを示しています。バインディングスコープの JNDI 層、サービススコープ内のメッセージ配信の詳細、およびポートスコープ内の応答先を設定します。
例13.9 WSDL コントラクトと SOAP/JMS 設定
<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「WSDL コントラクトと SOAP/JMS 設定」 の WSDL では以下を行います。
SOAP/JMS エクステンションの namespace を宣言します。
バインディングスコープで JNDI コネクションを設定します。
JMS 配信スタイルを非永続的に設定し、各メッセージを 1 分間存在させます。
ターゲット宛先を指定します。
リプライメッセージが greeterReply.queue
キューに配信されるように JMS トランスポートを設定します。