【问题标题】:Multiple web apps in tomcat connecting Websphere MQ连接Websphere MQ的tomcat中的多个Web应用程序
【发布时间】:2011-08-30 13:16:33
【问题描述】:

我在 tomcat 7 的单个实例中运行两个 grails Web 应用程序,都试图连接到 websphere MQ 发布和接收消息。第一个加载的效果很好,但第二个我们有以下错误。如果我将它们都部署在同一台机器上的不同tomcat实例中,它运行良好,但是当我在同一实例中运行两个应用程序时会引发以下错误。

2011-08-30 14:09:24,661 [Thread-5] [uk.co.pershing.jbf.messaging.ReaderListener] [ERROR] - 发生异常 ... com.ibm.msg.client.jms。详细的JMSException: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 已引发描述该问题的异常。有关详细信息,请参阅链接的异常。

【问题讨论】:

    标签: tomcat grails jms ibm-mq


    【解决方案1】:

    Java 虚拟机只允许加载一次 JNI 库。如果您尝试从应用程序加载 Websphere-MQ JNI 库,则首先加载的应用程序将通过其特定于应用程序的 ClassLoader 独占访问 JNI 库。

    对于单独的 Tomcat 实例,每个 Tomcat JVM 只有一个应用程序尝试加载 JNI 库,所以这不是问题。

    解决方案是从 Tomcat 类加载器加载 JNI 库,方法是将 Websphere-MQ JNI jar 放在 Tomcat lib/ 目录而不是应用程序的 lib/ 目录中。然后,Tomcat ClassLoader 将加载 JNI 库,两个应用程序都可以访问它们。

    【讨论】:

      猜你喜欢
      • 2015-08-26
      • 2014-07-05
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-29
      相关资源
      最近更新 更多