使用 SOAP over JMS 来传输 Web Service

您可以使用 SOAP over Java™ Message Service (JMS) 传输协议代替 SOAP over HTTP 在客户机与服务器之间传输 SOAP 消息。

开始之前

必须作为企业 Bean 实现 Web Service,以便可通过 JMS 传输进行访问。

关于此任务

本产品支持新兴的业界标准 SOAP over JMS 协议。SOAP over JMS 规范提供了一组标准的互操作性准则,以便在对 SOAP 消息使用符合 JMS 的传输方法时能够在不同供应商提供的实现之间进行互操作。通过使用此标准,当通过 JMS 传输对 Java API for XML Web Services (JAX-WS) 和 Java API for XML-based RPC (JAX-RPC) Web Service 交互 SOAP 请求和响应消息时,由不同供应商提供的客户机和服务器组件可以进行互操作。通过使用 JMS 传输方法,基于企业 Bean 的 Web Service 客户机和服务器可以通过 JMS 队列和主题(而不是通过 HTTP 连接)来进行通信。

不推荐使用的功能部件 不推荐使用的功能部件: 在较早版本的应用程序服务器中,支持将 IBM® 专有的 SOAP over JMS 协议用于 Java API for XML-based RPC (JAX-RPC) 应用程序。在 WebSphere® Application Server 7.0 和更高版本中,现在已不推荐使用此专有的 SOAP over JMS 协议,而是支持使用新兴的符合业界标准的 SOAP over JMS 协议。虽然还是可以对 Java API for XML Web Services (JAX-WS) 或 JAX-RPC Web Service 使用 IBM 专有的 SOAP over JMS 协议,但是,建议使用新兴的标准 SOAP over JMS 协议。如果客户机应用程序调用较低版本的 WebSphere Application Server 支持的基于企业 Bean 的 Web Service,那么您必须继续使用 IBM 专有的 SOAP over JMS 协议来访问这些 Web Service。depfeat
使用 JMS 的优势在于:
  • 通过可靠的消息传递来传输请求和响应消息。
  • 用于客户机和服务器的灵活的单向请求。例如,当客户机发送单向请求时,服务器不必处于活动状态。通过使用主题,可以将单向请求同时发送到多个服务器。
  • Java API for XML-Based Web Services (JAX-WS) 客户机和 Java API for XML-based RPC (JAX-RPC) 客户机都支持同步双向请求。
  • JAX-WS 客户机支持异步请求。

SOAP over JMS 规范定义了用于指定 JMS 目标的 JMS 端点 URI 语法。JMS 端点 URL 用于通过 JMS 传输访问 JAX-WS 或 JAX-RPC Web Service。此 URL 指定 JMS 目标和连接工厂,以及 Web Service 请求的端口组件名称。此端点 URL 类似于 HTTP 端点 URL,它指定了主机和端口以及上下文根和端口组件名称。

过程

  1. 开发要用作服务实现 Bean 的企业 Bean。
  2. 对于 JAX-WS 应用程序,将 @BindingType 注释添加至端点实现类并对端点指定 SOAP over JMS 绑定标识。 例如:
    @WebService 
    @BindingType("http://www.w3.org/2010/soapjms/")
    public class MyServiceBeanImpl {
        ...
    }

    @BindingType 注释用于指示对该端点发送请求和响应消息时要使用的协议 (SOAP) 和传输 (JMS)。

  3. 组装企业 Bean。
    1. 从企业 Bean 组装对 Web Service 启用的 JAR 文件 可以将为 Web Service 启用企业 Bean 模块所需的工件组装到 Java 归档 (JAR) 文件中。
    2. 将启用 Web Service 的企业 Bean JAR 文件组装到企业归档 (EAR) 文件中 可以将启用支持 Web Service 的 JAR 文件所必需的工件组装到 EAR 文件中。
  4. 通过使用 endptEnabler 命令,启用基于企业 Bean 的端点。 使用 -transport jms 选项来请求 endptEnabler 命令为包含 Web Service 实现 Bean 的每个 Enterprise JavaBeans (EJB) JAR 文件创建一个消息驱动的 Bean (MDB) 侦听器。此消息驱动的 Bean 充当与 EJB JAR 文件中包含的 Web Service 端点相关联的请求的侦听器。
  5. 确定应用程序使用的 JMS 对象的名称和类型。

    在安装应用程序之前,您需要完成下列任务:

    • 确定您的 Web Service 是从队列还是从主题接收请求。
      • 确定是使用安全目标还是非安全目标。
      • 确定队列和主题、连接工厂以及激活规范的名称。
    请使用下列准则来确定 JMS 对象的名称和类型。在典型情境中,可使用队列来接收 Web Service 请求。
    • 队列
      • 队列将接收所有类型的请求。有效请求包括单向请求、双向请求和同步请求。异步请求仅对 JAX-WS Web Service 有效。
      • 只有单个 EJB JAR 文件会使用队列来接收 EJB JAR 文件中包含的 Web Service 端点的请求。
    • 主题
      • 主题仅用于接收单向请求。
      • 可以在多个 EJB JAR 文件之间共享主题。发送到某个主题的每条请求消息都将由每一个已配置为侦听该主题的 MDB 侦听器处理。这意味着,每条请求消息都将由每一个与该特定主题相关联的 EJB JAR 文件处理。

    以下示例描述了包含 Web Service 端点的单个 EJB JAR 文件的典型配置:

    • 假设 EJB JAR 文件是 StockQuoteEJB.jar 并且包含与 StockQuote 服务相关的一个或多个 Web Service 端点。
    • 使用 JNDI 名称为 jms/StockQuote_Q 的单个队列 StockQuote_Q 来接收请求。
    • 客户机可以使用 JNDI 名称为 jms/StockQuote_CF 的连接工厂 StockQuote_CF 来连接到 JMS 提供程序。
    • EJB JAR 文件的 MDB 侦听器在发送应答消息时,使用 JNDI 名称为 jms/StockQuote_ReplyCF 的连接工厂 StockQuote_ReplyCF 来连接到 JMS 提供程序。
    • JNDI 名称为 jms/StockQuote_AS 的激活规范 StockQuote_AS 用于使 StockQuoteEJB.jar 的 MDB 侦听器与名为 StockQuote_Q 的队列相关联。
  6. 定义 JMS 受管对象

    确定 JMS 对象的名称和类型后,使用管理控制台或 wsadmin 脚本工具来定义 JMS 对象。根据所要使用的 JMS 提供程序的类型不同,可以通过多种方法来管理 JMS 资源。请参阅有关选择消息传递提供程序的资料,以便进一步了解如何管理 JMS 资源。

  7. 部署 Web Service 应用程序
    安装过程期间,会提示您为 EAR 文件中所包含的以及对 Web Service 启用的每个企业 Bean JAR 文件提供两种类型的信息:
    • 由 MDB 侦听器用于发送应答消息的连接工厂的 JNDI 名称。

      如果您的 Web Service 包含双向操作,那么由 endptEnabler 命令定义的 MDB 侦听器需要访问队列连接工厂以将应答消息添加到应答队列。MDB 侦听器使用资源环境引用 java:comp/env/jms/WebServicesReplyQCF。因此,在应用程序安装过程中,您必须为 MDB 侦听器提供连接工厂的实际 JNDI 名称以用于该 Web Service。对于上一个示例,此 JNDI 名称是 jms/StockQuote_ReplyCF

    • 要使用的 MDB 侦听器的激活规范的名称。

      激活规范是用于使 JMS 连接工厂与 JMS 目标(队列或主题)相关联的对象。在部署时,将对 MDB 配置正确的激活规范,以便将队列或主题中的消息正确地传递到该 MDB。在部署期间,您可以修改与每个 MDB 侦听器相关联的激活规范的名称。输入 EAR 文件中包含的激活规范名将显示为缺省值。如果您对 endptEnabler 命令指定了正确的激活规范名,那么可以接受缺省值。否则,请输入正确的激活规范名。

  8. 确定是使用新的行业标准 SOAP over JMS 协议还是使用 IBM 专有的 SOAP/JMS 协议。
    最佳实践 最佳实践: 最好的做法是使用行业标准 SOAP/JMS 协议。在本发行版中,已不推荐使用 IBM 专有的 SOAP/JMS 协议。但是,如果应用程序需要与先前版本的产品进行互操作,请使用专有协议。bprac
    • 如果使用行业标准 SOAP over JMS 协议,请使用为 JMS 绑定配置端点 URL 信息任务来指定与此标准的相关联 JMS 端点 URI 语法相符的 JMS 端点 URL 前缀;例如:
      jms:jndi:jms/StockQuote_Q&jndiConnectionFactoryName=jms/StockQuote_CF
    • 如果使用 IBM 专有的 SOAP over JMS 协议,请使用为 JMS 绑定配置端点 URL 信息任务来指定与 IBM 专有 SOAP over JMS 协议相符的 JMS 端点 URL 前缀;例如:
      jms:/queue?destination=jms/StockQuote_Q&connectionFactory=jms/StockQuote_CF
  9. (可选)为 JMS 绑定配置端点 URL 信息

    使用管理控制台来配置可以与应用程序中的每个 EJB JAR 模块相关联的 JMS 端点 URL 前缀。WSDL 发布者将使用这个不完整的 URL 字符串为企业 Bean JAR 文件中定义的每个端口组件生成实际的 JMS URL。需要调用 Web Service 的客户机可以使用已发布的 WSDL 文件。

    仅当要发布应用程序的 WSDL 文件时,才需要执行此步骤。

  10. (可选)发布应用程序的 WSDL 文件

    通过发布 WSDL 文件,将生成可用于开发客户机应用程序的 WSDL 文档。发布过程将在 WSDL 文件中生成完全解析的端点位置 URL。

    仅当需要使用所发布的 WSDL 文件来开发客户机应用程序时,才需要执行此步骤。

结果

您具有配置为使用 SOAP over JMS 以传输请求的 Web Service。

下一步做什么

开发 Web Service 客户机。


指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_soapjmstransportwbs
文件名:twbs_soapjmstransportwbs.html