技术开发 频道

利用WAS CE v2.1 创建基于JMS 的应用(1)

   创建 JMS 资源  

从图 1 可以看出,用户购买商品后,会计和库房都需要得到消息。这是一个消息发送者对应两个消息接收者的场景。根据 JMS 消息模型特性,这是一个“一对多”的消息发送方式,此处可以考虑使用发布/订阅模型。为此,需要定义一个 Topic,命名为 OrderTopic。然而,库房对运输队的通知则是明显的一对一消息发送,所以可以使用点对点消息发送模型。因此,需要定义一个 Queue,命名为 OrderQueue。 

与前文定义一个数据源相似,JMS 也可以通过两种方式定义 JMS 资源:通过管理控制台创建和通过资源描述文件创建。在这里我们使用第二种方式,所以需要在 ShopEAR 中的增加文件:jms-resources.xml。jms-resources.xml 中定义 JMS 资源的片段见清单 1。 

清单 1. jms-resources.xml

<resourceadapter>
        <resourceadapter-instance>
            <resourceadapter-name>jms-resources</resourceadapter-name>
            <nam:workmanager xmlns:nam="http://geronimo.apache.org/xml/ns/naming-1.2">
               <nam:gbean-link>DefaultWorkManager</nam:gbean-link>
            </nam:workmanager>
        </resourceadapter-instance>
      ......
     <adminobject>
        <adminobject-interface>javax.jms.Queue</adminobject-interface>
        <adminobject-class>
            org.apache.activemq.command.ActiveMQQueue
        </adminobject-class>
        <adminobject-instance>
            <message-destination-name>OrderQueue</message-destination-name>
            <config-property-setting name="PhysicalName">
               OrderQueue
            </config-property-setting>
        </adminobject-instance>
    </adminobject>
    <adminobject>
        <adminobject-interface>javax.jms.Topic</adminobject-interface>
        <adminobject-class>
                org.apache.activemq.command.ActiveMQTopic
       </adminobject-class>
       <adminobject-instance>
            <message-destination-name>OrderTopic</message-destination-name>
            <config-property-setting name="PhysicalName">
                 OrderTopic
            </config-property-setting>
        </adminobject-instance>
     </adminobject>

上述代码定义了一个 JMS 资源适配器 (Resource Adapter) 的实例,名称为 jms-resources。此处,可以将其理解为一个 JMS 资源组 (group)。其中,包含了三个 JMS 资源,分别为 OrderQueue、OrderTopic 及 OrderConnectionFactory。 

定义上述资源时,文件中引用了一些 ActiveMQ 的类。因此,还需要在 ShopEAR 的部署文件中,添加对 ActiveMQ 资源适配器 (Resource Adapter) 的依赖。同时,将位于 WASCE_HOME/repository/org/apache/geronimo/modules/geronimo-activemq-ra/2.1.3 的 geronimo-activemq-ra-2.1.3.rar 复制到 ShopEAR 中。 

在 application.xml 中添加以下代码: 

清单 2. application.xml

<module>
    <connector>geronimo-activemq-ra-2.1.3.rar</connector>
</module>

在 geronimo-application.xml 中添加以下代码: 

清单 3. geronimo-application.xml

<module>
    <connector>geronimo-activemq-ra-2.1.3.rar</connector>
    <alt-dd>jms-resources.xml</alt-dd>
 </module>

  经过上述配置之后,就可以在代码中使用已定义的 JMS 资源。

0
相关文章