1

我想在 tomcat server.xml 中将 jms ConnectionFactory 定义为全局资源,以将我的 webapps 连接到独立的 Artemis 服务器。

不幸的是,对于这样一个描述所需库和配置的常见用例,我找不到任何官方或干净的手册。

有人可以给我举个例子吗?

4

1 回答 1

1

我找不到任何基于 Artemis 的原生解决方案。Artemis 服务器与 ActiveMQ 客户端兼容。所以我们可以按照 ActiveMQ 手册来达到这个目的。

  • 将 ActiveMQ 客户端库添加到 $CATALINA_HOME/lib

    • geronimo-jms_2.0_spec-1.0-alpha-2.jar
    • activemq-client-5.14.3.jar
    • geronimo-j2ee-management_1.1_spec-1.0.1.jar
    • hawtbuf-1.11.jar
    • slf4j-api-1.7.6.jar
  • 将全局资源添加到 $CATALINA_HOME/conf/server.xml

    <Resource auth="Container"
        name="jms/ConnectionFactory"
        type="org.apache.activemq.ActiveMQConnectionFactory"
        factory="org.apache.activemq.jndi.JNDIReferenceFactory"
        brokerURL="tcp://127.0.0.1:61616"
        brokerName="MyActiveMQBroker"/>
    
  • 将资源链接添加到 $CATALINA_HOME/conf/context.xml

    <ResourceLink name="/ConnectionFactory" 
        global="jms/ConnectionFactory" 
        type="javax.jms.ConnectionFactory"/>
    
  • 在应用上下文中查找连接工厂

    <bean id="jmsConnectionFactory" 
        class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="java:comp/env/ConnectionFactory" />
        <property name="proxyInterface" value="javax.jms.ConnectionFactory"/>
    </bean>
    
于 2017-02-01T08:10:47.173 回答