2015-04-01 38 views
0

我試圖在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來提供配置。我也看到了一些與駱駝有關的解決方案,但這也是不可能的。

因此歸結起來,這些問題主要有:

  1. 是否有可能建立一個ActiveMQ代理本地的Web應用程序,可以通過網絡遠程應用程序訪問?
  2. 代理需要顯式配置嗎?
  3. 如果是的話,可以在不使用Spring的情況下進行代理配置,而是使用屬性文件或者類似的東西來添加項目的依賴關係嗎?

回答

相關問題