从natted ip连接到Tibco队列失败

时间:2010-08-31 07:35:49

标签: java jms tibco

首先,我对Tibco不是很熟悉,请记住这一点;)。

我有一个任务是编写一个读取/写入jms队列的应用程序(不是什么大不了的事)。问题是,客户使用Tibco&允许我连接到他们的服务器来运行一些测试。不幸的是,我只能通过natted IPs和amp;一旦我尝试连接到QueueConnectionFactory,我收到一个错误,因为Tibco本身试图连接到“私有”IP。

有趣的是,从上下文接收Queue,QueueConnectionFactory,...对象可以正常工作 - 但是当我执行toString()时,我看到cf收到的已经配置了'私有'IP。

示例:我将此网址设置为提供者网址 - > tibjmsnaming:// 213.133.111.182 :7222

接收QueueConnectionFactory对象工作正常,执行字符串返回“QueueConnectionFactory [URL = tcp:// 145.12.51.4 :7222; clientID = null]”

因此,只要我调用“createQueueConnectionFactory()”,我就会收到此异常:

javax.jms.JMSException:无法通过tcp://145.12.51.4连接到服务器:7222

有没有办法覆盖这种行为&告诉Tibco服务器改为使用配置的提供者URL吗?

3 个答案:

答案 0 :(得分:1)

1)从客户端计算机检查您是否能够ping通EMS服务器IP 2)检查是否可以通过Telnet连接到EMS IP:端口 3)如果两者都成功,那么你的EMS客户端应该连接到EMS服务器,如果它还没有连接,那么你4)必须检查EMS DLL是否正确至少能够连接当你运行EMS客户端和服务器时机。 5)如果第4点成功,则必须与网络管理员一起查看客户端防火墙和服务器防火墙策略。

-HB

答案 1 :(得分:1)

我知道这很古老,但如果你 - 像我一样 - 来自谷歌,这是正确答案:

上面的URL使用JNDI查找实际连接;连接器不直接连接到NATted IP,而是连接到NATted IP(213.133.111.182)以查找“真实”IP(145.12.51.4),由于NAT设置,该IP无效。

解决方案:更改JNDI存储中的已注册IP或直接连接,绕过JNDI。

答案 2 :(得分:-1)

如果正在执行NAT的防火墙/路由器配置为将该端口上的消息传递到正确的目标,那么您将能够直接向专用端口发送即席消息的唯一方法就是。否则他们将无处可去。

我认为您必须调查JMS或Tibco是否具有允许客户端维护与服务器的连接或者在服务器上轮询消息的模式,因为它无法在另一个方向上接收ad hoc消息。

在极端情况下(例如,所有端口都处于禁止状态的企业防火墙和代理),客户端甚至无法在某个随机端口上连接到您的服务器。它可能必须通过HTTP / 1.1管道打开连接以接收来自服务器的任何消息。