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 例外を取得できるかを理解しようとしていますか?

ただし、一部の tibco ライブラリを指す LD_LIBRARY_PATH と呼ばれるシステム変数セットが表示されます。

ここで何が起こっているのかについて、JMS シェルの経験のある人はいくらか光を当てることができますか? コードベースを検索すると、tibco のインポートはなく、javax.jms のみであることがわかります。

jni などを使用して LD_LIBRARY_PATH でラップされている可能性はありますか?

4

2 に答える 2

9

JMS 標準は API 標準です。標準を使用して作成されたアプリケーションは、特定の JMS 実装からクラスを参照する必要はありません。代わりに、接続ファクトリを取得するために JNDI が使用されます( example )。コードを変更する必要はなく、構成によって使用される 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 に答える