将消息发送到远程JMS主题

时间:2009-06-24 01:47:36

标签: configuration jboss jms

我正在编写一个小实用程序来将JMS消息发送到远程服务器,但是我无法正确配置InitialContext(或者看起来似乎如此)

初始化上下文的代码:

      Properties p = new Properties();
      p.put(Context.INITIAL_CONTEXT_FACTORY, 
            "org.jnp.interfaces.NamingContextFactory");
      p.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
      p.put(Context.PROVIDER_URL, "jnp://10.10.10.10:1099/");
      Context context = new InitialContext(p);

但是当我运行它时,我得到一个例外:

javax.naming.CommunicationException 
[Root exception is java.rmi.ConnectException: 
Connection refused to host: 127.0.0.1; 
nested exception is: 
java.net.ConnectException: Connection refused: connect]

令我感到莫名其妙的是抱怨127.0.0.1事件,虽然我正在为10.10.10.10进行配置,这是活着的,运行jboss,没有防火墙,我可以通过telnet会话到端口1099,所以看来没问题

任何指针?或帮手?

1 个答案:

答案 0 :(得分:4)

这是因为JNDI和依赖协议本质上是连接回来的,后续请求将转到服务器“认为”它应该监听的IP。如果你telnet到10.10.10.10:1099,看看输出,你会看到这样的东西:

telnet 10.10.10.10 1099
[Connection message]
[Garbage]
127.0.0.1....

原因是您的服务器在127.0.0.1上“正在服务”,并将使用该地址作为JNDI位置进行回复。因为您(很可能)在远程计算机上,当您的远程计算机尝试连接到Jboss服务器通知它连接到的IP(127.0.0.1)时,它会尝试连接到自身,而不是连接到JBoss服务器。

您需要以:./ run.sh -b 0.0.0.0(所有IP绑定)启动jboss,或者将计算机上的localhost条目更改为10.10.10.10

(顺便说一下,我记得多年来一直在努力争取这个,并且知道它是多么令人沮丧)