【问题标题】:Issue with Tibco EMS connectionTibco EMS 连接问题
【发布时间】:2025-07-09 06:00:02
【问题描述】:

我正在查看一个侦听 Tibco 队列的 Java 应用程序。该应用程序已经 4 年没有被触及,但我在客户端日志中看到一个连接终止的间歇性问题。我是 Tibco 和 JMS 的新手。

有人能解释一下吗?以下是我在日志中看到的异常消息:

javax.jms.JMSException: Connection has been terminated
    at com.tibco.tibjms.TibjmsSession._getSyncMessage(TibjmsSession.java:1845)
    at com.tibco.tibjms.TibjmsSession._receive(TibjmsSession.java:1735)
    at com.tibco.tibjms.TibjmsMessageConsumer._receive(TibjmsMessageConsumer.java:209)
    at com.tibco.tibjms.TibjmsMessageConsumer.receive(TibjmsMessageConsumer.java:355)

【问题讨论】:

  • 异常通常表示网络问题。可能是因为 TibcoEMS 和 Java 应用程序不在同一个网络中,安装到虚拟服务器,服务器之间有防火墙等我会先从网络诊断开始。

标签: jms tibco


【解决方案1】:

我熟悉 JMS,但不熟悉 Tibco。当客户端调用javax.jms.MessageConsumer.receive() 时,堆栈跟踪表明问题正在发生。此调用进入 Tibco JMS 客户端实现,从而产生 Connection has been terminated 消息。 JMS 规范没有定义伴随 JMS 异常的错误消息,因此该消息专门来自 Tibco 实现。我的猜测是网络错误或者连接超时。

我建议您检查 Tibco EMS 服务器日志,看看那里是否记录了任何相应的错误,并直接与 Tibco 跟进,看看哪些情况会导致此特定消息。 Tibco EMS 不像 ActiveMQ 那样开源,所以像我这样的人不可能深入研究代码并弄清楚到底发生了什么。

【讨论】: