0

first of all, I am not very familiar with Tibco, please keep that in mind ;).

I have a task to write an application which reads/writes to a jms queue (not a big deal). The problem is, the customer uses Tibco & allowed me to connect to their server to run some tests. Unfortunatly, I am only allowed to connect via natted IPs & as soon as I try to connect to a QueueConnectionFactory, I receive an error because Tibco itself tries to connect to the "private" IP.

The interesting thing is, receiving the Queue, QueueConnectionFactory,... objects from the context works fine - but when I do a toString() I see that the cf received has configured the 'private' IP.

Example: I set this url as provider url -> tibjmsnaming://213.133.111.182:7222

Receiving the QueueConnectionFactory object works fine, doing a to string returns "QueueConnectionFactory[URL=tcp://145.12.51.4:7222;clientID=null]"

So as soon as I call "createQueueConnectionFactory()" I receive this exception:

javax.jms.JMSException: Failed to connect to the server at tcp://145.12.51.4:7222

Is there a way to override this behavior & tell the Tibco server to use the configured provider url instead?

4

3 回答 3

1

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

-hB

于 2011-01-04T09:42:10.207 回答
1

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

上面的 URL 使用 JNDI 来查找实际的连接;连接器不直接连接到经过 NAT 的 IP,而是连接到经过 NAT 的 IP (213.133.111.182) 以查找“真实” IP (145.12.51.4),由于 NAT,该 IP 不起作用。

解决方案:要么更改JNDI商店中注册的IP,要么直接连接,绕过JNDI。

于 2017-06-01T15:07:31.740 回答
-1

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

我认为您必须调查 JMS 或 Tibco 是否具有允许客户端保持与服务器的连接或轮询服务器以获取消息的模式,因为它将无法在另一个方向接收临时消息。

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

于 2010-08-31T08:55:26.070 回答