2010-10-10 90 views
1

我想使用JMS從servlet(運行在Apache Tomcat上)發送消息到運行在同一系統上的不同VM上的ActiveMQ。Servlet到遠程ActiveMQ

東西我曾嘗試:

  1. 我的系統上運行的ActiveMQ。
  2. 寫了一個客戶端(Java app)(Producer)來創建消息。
  3. 寫了一個客戶端(Java應用程序)(消費者)來接收這些消息。

上述設置工作正常。

現在,我有一個servlet,它通過JNDI查找資源。這是Tomcat的META-INF目錄中的context.xml配置。

<Context> 
    <Resource 
      name="jms/ConnectionFactory" 
      auth="Container" 
      type="org.apache.activemq.ActiveMQConnectionFactory" 
      description="JMS Connection Factory" 
      factory="org.apache.activemq.jndi.JNDIReferenceFactory" 
      brokerURL=" tcp://localhost:61616" 
    /> 
</Context> 

我能夠從sevlet中查找這些資源。該消息被髮送。但我認爲它沒有達到ActiveMQ。任何想法爲什麼?

我覺得它是發送到其他目的地vm://localhost在容器內運行?這不是我想要的。我是MOM新手。

如果有人能告訴我如何從一個servlet發送JMS消息到遠程Broker,那就太好了。

回答

0

如果您通過JNDI查找指向Active Directory實例的tcp:// localhost:61616處的連接,那不是遠程代理。這是一個在本地計算機上運行的端口61616上的代理。如果要連接到另一臺計算機上的遠程代理,請將localhost替換爲IP地址。

布魯斯

+0

嗨布魯斯,感謝您的時間。 ActiveMQ在同一個系統上運行,但是作爲一個不同的進程運行。我如何連接到它的任何想法?它運行在不同的VM中。 – Voicestreams 2010-10-15 12:01:33

+0

如果它運行在同一個系統上但在不同的端口上,那麼你只需要指向正確的端口號即可。 – bsnyder 2010-10-18 04:26:36