13.3. WSDL 扩展
概述
您可以通过将 WSDL 扩展元素插入到合同中(在绑定范围、服务范围或端口范围)中,指定 JMS 传输的基本配置。WSDL 扩展允许您指定引导 JNDI InitialContext
的属性,然后可用来查找 JMS 目的地。您也可以设置一些影响 JMS 传输层行为的属性。
SOAP/JMS 命名空间
SOAP/JMS WSDL 扩展在 http://www.w3.org/2010/soapjms/
命名空间中定义。要在 WSDL 合同中使用它们,请将以下设置添加到 wsdl:definitions
元素中:
<wsdl:definitions ... xmlns:soapjms="http://www.w3.org/2010/soapjms/" ... >
WSDL 扩展元素
表 13.4 “SOAP/JMS WSDL 扩展元素” 显示可用于配置 JMS 传输的所有 WSDL 扩展元素。
元素 | 默认 | 描述 |
---|---|---|
|
指定 JNDI 提供程序的完全限定 Java 类名称。等同于设置 | |
|
指定初始化 JNDI 供应商的 URL。等同于设置 | |
|
指定用于创建 JNDI | |
| 指定 JMS 连接工厂的 JNDI 名称。 | |
|
|
指定是否使用 JMS PROJECTI |
|
[可选] 指定队列信息的回复目的地。回复目的地会出现在 此属性的值会根据 JMS URI 中指定的变体进行解释:
| |
|
| 指定 JMS 消息优先级,范围从 0(最低)到 9(最高)。 |
|
|
JMS 提供程序将丢弃消息的时间(以毫秒为单位)。值为 |
配置范围
WSDL 合同中的 WSDL 元素放置会影响合同中定义的端点更改的范围。SOAP/JMS WSDL 元素可以放置为 ws:binding
元素的子项、wsdl:service
元素或 wsdl:port
元素。SOAP/JMS 元素的父项决定将配置放入以下哪个范围:
- 绑定范围
-
您可以通过在
wsdl: binding 元素内放置扩展元素,将 JMS 传输配置为绑定范围
。此范围内的元素定义使用此绑定的所有端点的默认配置。绑定范围内的任何设置都可在服务范围或端口范围中覆盖。 - 服务范围
-
您可以通过将扩展元素放在
wsdl: service 元素内,将 JMS 传输配置为服务范围
。此范围内的元素定义此服务中所有端点的默认配置。服务范围中的任何设置都可在端口范围中覆盖。 - 端口范围
-
您可以通过将扩展元素放在
wsdl: port
元素内,将 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 扩展声明命名空间。
在绑定范围内配置 JNDI 连接。
将 JMS delivery 风格设置为非持久性,每个消息都设置为 live。
指定目标目的地。
配置 JMS 传输,以便在 greeterReply.queue
队列中发送回复消息。