第 13 章 使用 SOAP Over JMS
摘要
Apache CXF 实施 W3C 标准 SOAP/JMS 传输。这个标准旨在为 SOAP/HTTP 服务提供更强大的替代方法。使用这个传输的 Apache CXF 应用程序应该能够与实施 SOAP/JMS 标准的应用程序交互。传输在端点的 WSDL 中直接配置。
注意 :在 CXF 3.0 中删除了对 JMS 1.0.2 API 的支持。如果您使用红帽JBoss Fuse 6.2 或更高版本(包括 CXF 3.0),您的 JMS 提供程序必须支持 JMS 1.1 API。
13.1. 基本配置 复制链接链接已复制到粘贴板!
概述 复制链接链接已复制到粘贴板!
JMS 协议的 SOAP 由全球 Wide Web Consortium (W3C)定义为为大部分服务使用的自定义ary SOAP/HTTP 协议提供更可靠的传输层的方法。Apache CXF 实现与规范完全兼容,并且应与还合规的任何框架兼容。
此传输使用 JNDI 来查找 JMS 目的地。调用操作时,该请求将打包为 SOAP 消息,并在 JMS 消息的正文中发送到指定的目的地。
使用 SOAP/JMS 传输:
- 指定传输类型是 SOAP/JMS。
- 使用 JMS URI 指定目标目的地。
- 另外,还可配置 JNDI 连接。
- (可选)添加额外的 JMS 配置。
指定 JMS 传输类型 复制链接链接已复制到粘贴板!
您会将 SOAP 绑定配置为在指定 WSDL 绑定时使用 JMS 传输。您可以将 soap:binding
元素的 transport
属性设置为 http://www.w3.org/2010/soapjms/
。例 13.1 “使用 JMS 绑定规格的 SOAP” 显示使用 SOAP/JMS 的 WSDL 绑定。
例 13.1. 使用 JMS 绑定规格的 SOAP
<wsdl:binding ... > <soap:binding style="document" transport="http://www.w3.org/2010/soapjms/" /> ... </wsdl:binding>
<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 URI,如 JMS 1.0 的 URI Scheme 中定义的。例 13.2 “JMS URI 语法” 显示 JMS URI 的语法。
例 13.2. JMS URI 语法
jms:variant:destination?options
jms:variant:destination?options
表 13.1 “JMS URI 变体” 描述 JMS URI 的可用变体。
变体 | 描述 |
---|---|
jndi | 指定目的地名称是 JNDI 队列名称。使用这种变体时,您必须提供用于访问 JNDI 供应商的配置。 |
jndi-topic | 指定目的地名称是 JNDI 主题名称。使用这种变体时,您必须提供用于访问 JNDI 供应商的配置。 |
队列 |
指定目的地是使用 JMS 解析的队列名称。提供的字符串传递到 |
topic |
指定目的地是使用 JMS 解析的主题名称。提供的字符串传递到 |
JMS URI 的选项 部分用于配置传输,并在 第 13.2 节 “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>
<wsdl:port ... >
...
<soap:address location="jms:jndi:dynamicQueues/test.cxf.jmstransport.queue" />
</wsdl:port>
配置 JNDI 和 JMS 传输 复制链接链接已复制到粘贴板!
SOAP/JMS 提供了多种方法来配置 JNDI 连接和 JMS 传输: