第 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 传输:

  1. 指定传输类型是 SOAP/JMS。
  2. 使用 JMS URI 指定目标目的地。
  3. (可选)配置 JNDI 连接。
  4. (可选)添加额外的 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 的可用变体。

表 13.1. JMS URI 变体
Variant描述

jndi

指定目的地名称是 JNDI 队列名称。在使用这种变体时,您必须提供配置来访问 JNDI 提供程序。

jndi-topic

指定目的地名称是 JNDI 主题名称。在使用这种变体时,您必须提供配置来访问 JNDI 提供程序。

queue

指定目标是使用 JMS 解析的队列名称。提供的字符串传递到 Session.createQueue (),以创建目的地的表示。

topic

指定目标是使用 JMS 解析的主题名称。提供的字符串被传递给 Session.createTopic (),以创建目的地的表示。

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 传输:

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.