使用 SOAP over JMS 为 Web Service 配置永久应答队列

如果使用的双向 Web service 通信使用业界标准的 SOAP over JMS 协议,那么在 Java™ API for XML Web Services (JAX-WS) 或 Java API for XML-based RPC (JAX-RPC) Web service 客户机上配置永久应答队列将很有用。使用永久应答队列可改进性能,因为此应答队列阻止客户机在每次调用 Web Service 请求时都必须创建临时应答队列。

关于此任务

通过以下某种方式在 Web Service 客户机上配置永久应答队列:
  • 在 JMS 端点 URL 中指定可选的 replyToName 属性。
  • 程序化地设置应答队列。
    • 对于 JAX-WS Web Service 客户机,请在客户机 RequestContext 对象上程序化地设置应答队列的 JNDI 名称。在 RequestContext 对象上设置应答队列 JNDI 名称将影响使用该 RequestContext 对象调用的所有后续请求。
    • 对于 JAX-RPC Web Service 客户机,在客户机 Stub 或 Call 对象上程序化地设置应答队列的 JNDI 名称。将应答队列 JNDI 名称设置为 Stub 或 Call 属性,将影响使用该 Stub 或 Call 对象调用的所有后续请求。
  • 将应答队列设置为 Java 虚拟机 (JVM) 系统属性。 将应答队列设置为 JVM 系统属性将影响在特定 JVM 中运行的所有 Web Service 客户机。如果在同一个 JVM 中运行的多个客户机需要使用不同的应答队列,那么此选项无效。请改为使用另外两个选项中的其中一个。

要使用这些选项中的任何一个设置永久应答队列,只有客户机端配置是必需的。Web Service 提供程序没有必需的配置。

使用 Web Service 客户机配置应答队列之前,使用 JMS 消息传递提供程序的典型管理功能来创建永久应答队列。

过程

使用以下某种方式配置永久应答队列的 JNDI 名称:
  • 在 JMS 端点 URL 中指定可选的 replyToName 属性;例如:
    jms:jndi:jms/MyRequestQueue&jndiConnectionFactoryName=jms/MyCF&replyToName=jms/MyReplyQueue
  • 在客户机上程序化地设置应答队列。
    属性的值是字符串,它代表应答队列的 JNDI 名称。
    • 对于 JAX-WS Web Service 客户机,在客户机 JAX-WS RequestContext 对象上设置 com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME 属性;例如:
      ((BindingProvider) port).getRequestContext().put
      (com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME, "jms/MyReplyQueue");
    • 对于 JAX-RPC Web Service 客户机,在客户机 JAX-RPC Stub 或 Call 对象上设置 com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME 属性;例如:
      ((javax.xml.rpc.Stub) stub)._setProperty(com.ibm.wsspi.webservices.Constants.JMS_REPLY_QUEUE_JNDI_NAME, 
      "jms/MyReplyQueue"); 
  • 将应答队列的 JNDI 名称设置为 JVM 系统属性。
    • 对于 Java 客户机调用,在命令提示符上输入以下代码:
      java -Dcom.ibm.websphere.webservices.JMSReplyQueueJndiName=jms/MyReplyQueue
    • 对于在应用程序服务器上运行的 JVM,请执行以下操作:
      • 使用管理控制台为运行 Web Service 客户机应用程序的应用程序服务器设置 JVM 系统属性。

        要设置定制属性,请登录到管理控制台,并浏览到Java 虚拟机定制属性面板。

        1. 单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name> Java 和进程管理 > 进程定义 > Java 虚拟机 > 定制属性 > 新建
        2. 名称属性设置为:com.ibm.websphere.webservices.JMSReplyQueueJndiName
        3. 属性设置为:jms/Permanent_Q
        4. 单击“确定”以保存更改。
        5. 单击与节点同步更改并单击保存
        6. 重新启动应用程序服务器。

结果

Web Service 客户机现在可以接收来自永久应答队列的 SOAP over JMS 消息。


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



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