通过 JNDI 将 Tomcat 连接到独立的 Artemis Broker

Connecting Tomcat to standalone Artemis Broker via JNDI

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

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

谁能给我举个例子?

我找不到任何基于 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"/>
    
  • 将资源 link 添加到 $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>