2010-10-10 83 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