第 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 端口时,可以指定 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
表 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>
配置 JNDI 和 JMS 传输
SOAP/JMS 提供了多种方法来配置 JNDI 连接和 JMS 传输: