0

我需要将消息发送到远程服务器的队列(运行“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.1.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 

连接到远程队列有什么特别的事情要做吗?

4

2 回答 2

1

我通过使用以下进程参数重新启动我的 JBoss 服务器解决了这个问题:

-b 0.0.0.0

JBoss 服务器默认启动,只允许本地连接。通过使用上述参数启动它,您可以指示它接受远程连接。

于 2009-12-13T20:48:25.623 回答
1

您使用的 IP 地址不正确:192.168.1.131.129 有 5 个数字,应该只有 4 个。

于 2009-11-25T13:45:09.653 回答