14.5.3. JMS 客户端配置

概述

JMS 消费者端点指定它们所使用的消息类型。JMS 使用者端点可以使用 JMS ByteMessage 或 JMS TextMessage

在使用 ByteMessage 时,消费者端点使用 byte[] 作为数据存储在 JMS 邮件正文中的数据并检索数据。发送消息时,消息数据(包括任何格式信息)被打包成 字节[],并在将消息正文放置在线路上前将其放在消息正文中。收到消息时,使用者端点将尝试解包消息正文中存储的数据,就像将其打包在 字节[] 中一样。

在使用 text Message 时,使用者端点使用字符串作为来自消息正文的数据的方法。发送消息时,消息信息(包括任何格式的信息)将转换为字符串,并放入 JMS 消息正文。收到消息时,使用者端点将尝试解包在 JMS 消息正文中存储的数据,就像将其打包成字符串一样。

当原生 JMS 应用与 Apache CXF 消费者交互时,JMS 应用负责解释消息和格式化信息。例如,如果 Apache CXF 合同指定用于 JMS 端点的绑定是 SOAP,且消息将被打包为 text Message,接收 JMS 应用会得到一个包含所有 SOAP envelope 信息的文本信息。

指定消息类型

JMS 使用者端点接受的消息类型通过可选的 jms:client 元素进行配置。jms:client 元素是 WSDL 端口 元素的子项,并具有一条属性:

表 14.3. JMS 客户端 WSDL 扩展

messageType

指定消息数据如何打包为 JMS 消息。文本指定数据将打包为 text Message二进制文件 指定数据将打包为 ByteMessage

示例

例 14.7 “用于 JMS 消费者端点的 WSDL” 显示用于配置 JMS 消费者端点的 WSDL。

例 14.7. 用于 JMS 消费者端点的 WSDL

<service name="JMSService">
  <port binding="tns:Greeter_SOAPBinding" name="SoapPort">
    <jms:address jndiConnectionFactoryName="ConnectionFactory"
                 jndiDestinationName="dynamicQueues/test.Celtix.jmstransport" >
      <jms:JMSNamingProperty name="java.naming.factory.initial"
                             value="org.activemq.jndi.ActiveMQInitialContextFactory" />
      <jms:JMSNamingProperty name="java.naming.provider.url"
                             value="tcp://localhost:61616" />
    </jms:address>
    <jms:client messageType="binary" />
  </port>
</service>