将消息发布到远程JMS提供程序

时间:2009-11-25 11:15:14

标签: java jboss jms

我希望能够将消息发送到远程JBoss服务器(JBoss MQ)。

我可以为当地人做这件事,但是在尝试使用遥控器时我会被卡住。

任何人都可以向我解释如何做到这一点吗? 有没有具体的步骤?

[到目前为止我尝试过的]

我需要向远程服务器的队列发送消息(运行“JBoss MQ”),以便它可以处理消息并对其进行操作。

    Properties properties = new Properties();
    properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    properties.put(Context.URL_PKG_PREFIXES, "org.jnp.interfaces");
    properties.put(Context.PROVIDER_URL, "jnp://192.168.131.129:1299");
    InitialContext jndiContext = new InitialContext(properties);

    //[2] Look up connection factory and queue.
    ConnectionFactory connectionFactory = (ConnectionFactory)jndiContext.lookup("UIL2XAConnectionFactory");
    Queue queue = (Queue)jndiContext.lookup("Queue/DataTransferQueue");

但运行上面的代码时出现异常: (即使我可以ping远程服务器)。

javax.naming.CommunicationException: Could not obtain connection to any of these urls: 192.168.1.131.129:1299 and 
discovery failed with error: javax.naming.CommunicationException: 
Receive timed out [Root exception is java.net.SocketTimeoutException: Receive timed out] 
[Root exception is javax.naming.CommunicationException: Failed to connect to server 192.168.1.131.129:1299 

连接到远程队列有什么特别之处吗?

2 个答案:

答案 0 :(得分:1)

您是否确认可以连接到该远程主机端口,即telnet 192.168.131.129 1299?你可能有一个阻止某些流量但允许ping的防火墙。

答案 1 :(得分:1)

好的,经过多次努力,我终于找到了问题所在:

我没有以可接受远程连接的方式在远程服务器上启动JBoss。默认情况下,JBoss只允许本地连接。

所以,我用这个参数重新启动它:-b 0.0.0.0,现在工作正常。

感谢您的帮助和支持。