2011-08-30 4 views
1

tomcat 7의 단일 인스턴스에서 두 개의 grails 웹 응용 프로그램을 실행하고 있습니다. 둘 다 websphere MQ 게시 및 수신 메시지에 연결하려고합니다. 로드 된 첫 번째 것은 잘 작동하지만 두 번째 것은 오류가 발생했습니다. 동일한 컴퓨터에서 Tomcat의 다른 인스턴스에 두 가지를 모두 배포하면 잘 작동하지만 동일한 인스턴스에서 두 응용 프로그램을 모두 실행하면 아래 오류가 발생합니다.Websphere MQ를 연결하는 Tomcat의 여러 웹 응용 프로그램 MQ

2011-08-30 14 : 09 : 24,661 [스레드 -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 [스레드 -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가 문제점을 설명하는 예외를 던졌습니다. 자세한 정보는 링크 된 예외를 참조하십시오.

답변

2

JVM (Java Virtual Machine)은 JNI 라이브러리를 한 번만로드 할 수 있습니다. 응용 프로그램에서 Websphere-MQ JNI 라이브러리를로드하려고하면 먼저로드되는 응용 프로그램은 응용 프로그램 특정 ClassLoader를 통해 JNI 라이브러리에 독점적으로 액세스합니다.

별도의 Tomcat 인스턴스를 사용하는 경우 Tomcat JVM 당 하나의 응용 프로그램 만 JNI 라이브러리를로드하려고하므로 문제가되지 않습니다.

이 해결책은 Websphere-MQ JNI jar를 응용 프로그램의 lib/디렉토리 대신 Tomcat lib/디렉토리에 두어 Tomcat ClassLoader에서 JNI 라이브러리를로드하는 것입니다. 그런 다음 Tomcat ClassLoader는 JNI 라이브러리를로드하고 두 응용 프로그램 모두에서 액세스 할 수 있습니다.

+0

고마워, 저를 위해 일했습니다. –