как jms работает с tibco?

У меня есть приложение Java, которое подписывается на тематическое приложение JMS, которое иногда выдает следующее исключение:

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-ized, но он не имеет никаких ссылок на какие-либо библиотеки tibco. Я пытаюсь понять, как можно получить исключения tibco, если в кодовой базе нет ссылок на tibco?

Однако я вижу набор системных переменных с именем LD_LIBRARY_PATH, который указывает на некоторые библиотеки tibco.

Может ли кто-нибудь иметь опыт работы с оболочкой JMS, чтобы понять, что здесь может происходить? Поиск в кодовой базе показывает, что нет импорта tibco, только javax.jms.

Возможно ли, что они каким-то образом обернуты LD_LIBRARY_PATH с помощью jni или чего-то еще?


person kkudi    schedule 25.04.2013    source источник
comment
можешь опубликовать полный код   -  person JavaCoding    schedule 27.04.2013


Ответы (2)


Стандарт JMS — это стандарт API. Приложения, написанные с использованием стандарта, не должны ссылаться на классы какой-либо конкретной реализации JMS. Вместо этого JNDI используется для получения фабрики соединений (< href="http://docs.oracle.com/javaee/1.4/tutorial/doc/JMS5.html" rel="noreferrer">пример). Намерение состоит в том, чтобы используемая реализация JMS могла быть изменена через конфигурацию, а не для изменения кода.

Что касается LD_LIBRARY_PATH, EMS использует JNI, и LD_LIBRARY_PATH необходим, поэтому JAR-файл EMS, используемый вашим приложением, может найти собственную библиотеку.

person Tom Howard    schedule 29.04.2013
comment
большое спасибо - почему этот ответ так трудно найти в Google? - person kkudi; 29.04.2013

Соединение разорвано

Это не означает, что у вашего кода jms есть какие-то проблемы, просто сервер EMS прерывает соединение из-за некоторых других проблем, таких как проблемы с сердцебиением и т. д.

person RB7    schedule 08.04.2016
comment
Ваш ответ кажется скорее предложением, чем решением вопроса. Постарайтесь добавить больше информации в свой пост. - person Raju; 09.04.2016