Несколько веб-приложений в Tomcat, соединяющих Websphere MQ - PullRequest
1 голос
/ 30 августа 2011

Я запускаю два веб-приложения Grails в одном экземпляре Tomcat 7, оба пытаются подключиться к публикации и получению сообщений websphere MQ.Первая, которая загружается, работает хорошо, а вторая, у нас есть следующая ошибка.Если я разверну их оба в разных экземплярах tomcat на одной и той же машине, это будет работать хорошо, но ошибка возникает, когда я запускаю оба приложения в одном экземпляре.

2011-08-30 14: 09: 24,661 [Thread-5] [uk.co.pershing.jbf.messaging.ReaderListener] [ОШИБКА] - Произошло исключение ... com.ibm.msg.client.jms.DetailedJMSException: JMSFMQ6312: Возникла исключительная ситуация в Java (tm) MQI.Java (tm) MQI выдал исключение, описывающее проблему.См. Связанное исключение для получения дополнительной информации.Связанное исключение: com.ibm.mq.jmqi.JmqiException: CC = 2; RC = 2495; AMQ8568: Собственная библиотека JNI 'mqjbnd' не найдена.[3 = mqjbnd] 2011-08-30 14: 09: 24,661 [Thread-5] [uk.co.pershing.jbf.servlet.BusStartupServlet] [ОШИБКА] - uk.co.pershing.jbf.messaging.config.ConfigurationException: com.ibm.msg.client.jms.DetailedJMSException: JMSFMQ6312: Возникла исключительная ситуация в Java (tm) MQI.Java (tm) MQI выдал исключение, описывающее проблему.См. Связанное исключение для получения дополнительной информации.

1 Ответ

2 голосов
/ 31 августа 2011

Виртуальная машина Java позволяет загружать библиотеки JNI только один раз.Если вы пытаетесь загрузить библиотеки JNI Websphere-MQ из приложений, то приложение, которое загружается первым, будет иметь эксклюзивный доступ к библиотекам JNI через свой специфический для приложения ClassLoader.

В отдельных экземплярах Tomcat есть только одинприложение на Tomcat JVM пытается загрузить библиотеки JNI, поэтому это не проблема.

Решение этого состоит в том, чтобы загрузить библиотеки JNI из загрузчика Tomcat ClassLoader, поместив JNI-файлы Websphere-MQ вДиректория Tomcat lib / вместо директории lib / приложения.Затем Tomcat ClassLoader загрузит библиотеки JNI, и они будут доступны обоим приложениям.

...