使用 JAX-WS JMS 异步响应消息侦听器

Java™ API for XML-Based Web Services (JAX-WS) 包含 Java 消息服务 (JMS) 异步响应消息侦听器,它用于接收对使用 JMS 传输的异步 JAX-WS 请求的响应。JMS 异步响应消息侦听器在应用程序服务器和应用程序客户机环境中使用。

开始之前

JAX-WS 支持通过使用回调或轮询模型来异步调用 Web Service 操作。当 JAX-WS 客户机使用 JMS 传输来调用异步操作时,将由异步响应消息侦听器接收响应。 要了解如何使用 JAX-WS 异步客户机调用模型,请阅读有关异步调用 JAX-WS Web Service 的相关信息。

关于此任务

当客户机应用程序使用 JMS 传输时,JMS 异步响应消息侦听器在 Web Service 客户机环境中用于接收入局异步响应。侦听器要求连接工厂和队列正确运行。先配置连接工厂和队列,然后通过设置 Java 系统属性来指定连接工厂和侦听器队列的 JNDI 名称。运行客户机的环境确定设置系统属性的方式。

客户机使用 JMS 传输调用第一个异步 JAX-WS 操作时,Web Service 客户机运行时环境将自动启动 JMS 异步响应消息侦听器。

使用异步响应消息侦听器配置的连接工厂和队列用于在特定的 Java 进程中调用的所有请求,例如应用程序服务器或应用程序客户机容器的 Java 进程。可以在不同的 Java 进程之间共享连接工厂。但是,不能在 Java 进程之间共享队列。

过程

  1. 确定是否要 JAX-WS 客户机使用 JMS 传输机制。
  2. 对于将 JMS 用作异步 JAX-WS 请求的传输方法的每个 Java 进程,配置该进程的 JMS 异步响应侦听器使用的连接工厂和队列。 可以在多个 Java 进程之间共享连接工厂,但不能在 Java 进程之间共享队列。
  3. 对于每个 Java 进程,设置 com.ibm.websphere.webservices.jms.AsyncReplyQueueName 和 com.ibm.websphere.webservices.jms.AsyncReplyCFName Java 系统属性以指定该进程的 JMS 异步响应消息侦听器使用的队列和连接工厂的 JNDI 名称。

    如果队列的 JNDI 名称是缺省值 jms/DefaultAsyncReplyQueue,那么您无需设置 AsyncReplyQueueName 属性。类似地,如果连接工厂的 JNDI 名称是缺省值 jms/DefaultAsyncReplyCF,那么您也无需设置 AsyncReplyCFName 属性。

    如果客户机在应用程序服务器环境中运行,请通过使用管理控制台或 wsadmin 命令将这些属性设置为应用程序服务器系统属性。

    如果客户机在应用程序客户机容器环境中运行,那么应通过在 launchClient 命令行上使用 –CCD 选项来设置这些属性。

结果

使用 JMS 传输时,JAX-WS Web Service 客户机配置为使用 JMS 异步响应消息侦听器来接收异步响应消息。

示例

假设您具有 JAX-WS Web Service 客户机,该客户机在应用程序客户机容器环境中运行并且使用 JMS 传输与服务器通信。同样假设客户机调用异步 JAX-WS 操作。可以使用 JNDI 名称 jms/MyAppCF 创建连接工厂,并使用 JNDI 名称 jms/MyAppAsyncReplyQueue 创建队列。使用 launchClient 命令调用客户机时,请如以下命令中所示,指定队列和连接工厂的 JNDI 名称:
launchClient MyAppClient.ear \
   -CCDcom.ibm.websphere.webservices.jms.AsyncReplyQueueName=jms/MyAppReplyQueue \
   -CCDcom.ibm.websphere.webservices.jms.AsyncReplyCFName=jms/MyAppCF \
   <application arguments>

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



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