第 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 由全球 Web Consortium (W3C)定义,作为向大多数服务使用的定制 SOAP/HTTP 协议提供更可靠的传输层的方法。Apache CXF 实现与规格完全兼容,应该与任何兼容的框架兼容。
此传输使用 JNDI 来查找 JMS 目的地。调用操作时,请求将打包为 SOAP 消息,并在 JMS 消息的正文中发送到指定的目的地。
使用 SOAP/JMS 传输:
- 指定传输类型是 SOAP/JMS。
- 使用 JMS URI 指定目标目的地。
- (可选)配置 JNDI 连接。
- (可选)添加额外的 JMS 配置。
指定 JMS 传输类型
您可以在指定 WSDL 绑定时,将 SOAP 绑定配置为使用 JMS 传输。您可以将 soap:binding
元素的 transport
属性设置为 http://www.w3.org/2010/soapjms/
。例 13.1 “SOAP over JMS 绑定规格” 显示使用 SOAP/JMS 的 WSDL 绑定。
例 13.1. SOAP over JMS 绑定规格
<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 1.0 的 URI Scheme 中定义的 JMS URI。例 13.2 “JMS URI 语法” 显示 JMS URI 的语法。
例 13.2. JMS URI 语法
jms:variant:destination?options
表 13.1 “JMS URI 变体” 描述 JMS URI 的可用变体。
Variant | 描述 |
---|---|
jndi | 指定目的地名称是 JNDI 队列名称。在使用这种变体时,您必须提供配置来访问 JNDI 提供程序。 |
jndi-topic | 指定目的地名称是 JNDI 主题名称。在使用这种变体时,您必须提供配置来访问 JNDI 提供程序。 |
queue |
指定目标是使用 JMS 解析的队列名称。提供的字符串传递到 |
topic |
指定目标是使用 JMS 解析的主题名称。提供的字符串被传递给 |
JMS URI 的 options 部分用于配置传输,并在 第 13.2 节 “JMS URI” 中讨论。
例 13.3 “SOAP/JMS 端点地址” 显示 SOAP/JMS 端点的 WSDL 端口条目,该端点使用 JNDI 查找其目标目的地。
例 13.3. SOAP/JMS 端点地址
<wsdl:port ... > ... <soap:address location="jms:jndi:dynamicQueues/test.cxf.jmstransport.queue" /> </wsdl:port>
配置 JNDI 和 JMS 传输
SOAP/JMS 提供了多种方法来配置 JNDI 连接和 JMS 传输: