我試圖在Tomcat託管的Web應用程序的上下文中設置ActiveMQ代理。此外,我想要使用的連接器是TCP,因爲最終該代理應該可以從遠程應用程序訪問。通過TCP與ActiveMQ代理的Tomcat Web應用程序
到目前爲止,我所做的就是創建一個像本地JNDI context.xml
配置一個簡單的Web應用程序如下:
<Resource auth="Container"
name="jms/ConnectionFactory"
type="org.apache.activemq.ActiveMQConnectionFactory"
description="JMSConnection"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
brokerURL="tcp://localhost:61616"
brokerName="MQBroker"/>
<Resource auth="Container"
name="jms/MQueue"
type="org.apache.activemq.command.ActiveMQQueue"
description="JMS queue"
factory="org.apache.activemq.jndi.JNDIReferenceFactory"
physicalName="SOME.QUEUE"/>
我已相應更新了web.xml
文件,並從ServletContextListener
稱爲連接工廠實現類如下:
InitialContext context = new InitialContext();
Context cntx = (Context) context.lookup("java:comp/env");
ActiveMQConnectionFactory factory = (ActiveMQConnectionFactory) cntx.lookup("jms/ConnectionFactory");
factory.createQueueConnection();
在部署應用程序,我得到一個異常:
無法連接到代理URL:tcp:// localhost:61616。原因:java.net.ConnectException:連接被拒絕
我想這是因爲對於券商本身沒有配置,如網上的例子我看到,使用Spring配置文件附加到資源的brokerUrl
屬性。問題是項目環境是嚴格定義的,所以我不能使用spring來提供配置。我也看到了一些與駱駝有關的解決方案,但這也是不可能的。
因此歸結起來,這些問題主要有:
- 是否有可能建立一個ActiveMQ代理本地的Web應用程序,可以通過網絡遠程應用程序訪問?
- 代理需要顯式配置嗎?
- 如果是的話,可以在不使用Spring的情況下進行代理配置,而是使用屬性文件或者類似的東西來添加項目的依賴關係嗎?
事實上通過產品總數去除JNDI配置和編寫Java代碼我幾乎可以啓動代理並通過servlet上下文初始化觸發的隊列。 – dessad 2015-04-02 15:38:18