首先,我对 Tibco 不太熟悉,请记住这一点;)。
我的任务是编写一个读取/写入 jms 队列的应用程序(没什么大不了的)。问题是,客户使用 Tibco 并允许我连接到他们的服务器来运行一些测试。不幸的是,我只允许通过 natted IP 进行连接,一旦我尝试连接到 QueueConnectionFactory,我就会收到错误,因为 Tibco 本身尝试连接到“私有(private)”IP。
有趣的是,从上下文接收队列、QueueConnectionFactory...对象工作正常 - 但当我执行 toString() 时,我看到收到的 cf 已配置“私有(private)”IP。
示例:我将此网址设置为提供商网址 -> tibjmsnaming://213.133.111.182:7222
接收 QueueConnectionFactory 对象工作正常,执行 to string 返回“QueueConnectionFactory[URL=tcp://145.12.51.4:7222;clientID=null]”
因此,一旦我调用“createQueueConnectionFactory()”,我就会收到此异常:
javax.jms.JMSException:无法连接到服务器 tcp://145.12.51.4:7222
有没有办法覆盖此行为并告诉 Tibco 服务器使用配置的提供程序 url?
最佳答案
我知道这很古老,但如果您像我一样来自 Google,那么正确的答案如下:
上面的URL使用JNDI来查找实际的连接;连接器不会直接连接到 NATted IP,而是连接到 NATted IP(213.133.111.182)来查找“真实”IP(145.12.51.4),由于 NATting,该 IP 不起作用。
解决方案:更改 JNDI 存储中的注册 IP 或直接连接,绕过 JNDI。
关于java - 从 natted ip 连接到 Tibco 队列失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3606945/