7

我有一个订阅 JMS 主题应用程序的 Java 应用程序,该应用程序偶尔会出现以下异常:

javax.jms.JMSException: Connection has been terminated
at com.tibco.tibjms.Tibjmsx.buildException(Tibjmsx.java:470)
at com.tibco.tibjms.TibjmsConnection._onDisconnected(TibjmsConnection.java:1946)
at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.work(TibjmsxLinkTcp.java:314)
at com.tibco.tibjms.TibjmsxLinkTcp$LinkReader.run(TibjmsxLinkTcp.java:250)

在 2 年未动过之后,我收到了这段代码。我的 JMS 知识非常有限。它是 maven 化的,但它没有引用任何 tibco 库。我试图了解当代码库中没有 tibco 引用时如何获得 tibco 异常?

但是,我确实看到了一个名为 LD_LIBRARY_PATH 的系统变量集,它指向一些 tibco 库。

对 JMS shell 有经验的人可以了解这里可能发生的情况吗?搜索代码库显示没有 tibco 导入,只有 javax.jms。

是否有可能使用 jni 或其他东西以某种方式将它们包裹在 LD_LIBRARY_PATH 中?

4

2 回答 2

9

JMS 标准是一种 API 标准。使用该标准编写的应用程序不需要引用来自任何特定 JMS 实现的类。相反,JNDI 用于获取连接工厂示例)。目的是可以通过配置更改使用的 JMS 实现,而不必更改代码。

关于 LD_LIBRARY_PATH,EMS 使用 JNI,并且需要 LD_LIBRARY_PATH,因此您的应用程序使用的 EMS jar 可以找到本机库。

于 2013-04-29T12:19:01.020 回答
0

连接已终止

这并不意味着您的 jms 代码有一些问题,EMS 服务器正在切断连接,因为其他一些问题,如心跳问题等。

于 2016-04-08T23:44:23.240 回答