当前位置: 首页 > 知识库问答 >
问题:

使用JNDI在Tomcat上设置WMQ V8连接工厂

齐招
2023-03-14

目前,我们使用JNDI的Tomcat配置基于这一建议,该建议目前正在发挥作用。

如何使用JMS和JNDI连接到WebSphere MQ(MQ系列)服务器?

由于我们正在升级到v8,我想利用JMS 2.0特性。这需要将jar文件更新到JMS 2.0版本。

因此,我从tomcat lib文件夹中删除了以下JAR。

  • com。ibm。mq。jar

用这些罐子代替了它们。根据这个链接

  • com。ibm。mq。所有客户。jar

我的JNDI配置与此配置匹配。

<Resource
      name="jms/MyQCF"
      auth="Container"
      type="com.ibm.mq.jms.MQQueueConnectionFactory"
      factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory"
      description="JMS Queue Connection Factory for sending messages"
      HOST="<mymqserver>"
      PORT="1414"
      CHAN="<mychannel>"
      TRAN="1"
      QMGR="<myqueuemanager>"/>

现在有了更新的jar文件,我得到了以下例外。

Caused by: java.lang.NoClassDefFoundError: javax/jms/JMSRuntimeException
    at com.ibm.mq.jms.MQQueueConnectionFactoryFactory.getObjectInstance(MQQueueConnectionFactoryFactory.java:69)
    at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:141)
    at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:321)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:842)
    at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
    at org.apache.naming.NamingContextBindingsEnumeration.nextElementInternal(NamingContextBindingsEnumeration.java:117)
    at org.apache.naming.NamingContextBindingsEnumeration.next(NamingContextBindingsEnumeration.java:71)
    at org.apache.naming.NamingContextBindingsEnumeration.next(NamingContextBindingsEnumeration.java:34)
    at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans(GlobalResourcesLifecycleListener.java:138)
    at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.createMBeans(GlobalResourcesLifecycleListener.java:110)
    at org.apache.catalina.mbeans.GlobalResourcesLifecycleListener.lifecycleEvent(GlobalResourcesLifecycleListener.java:82)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
    at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:347)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:724)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    ... 7 more

问题:

我应该在类路径中包含另一个jar文件吗?

或者v8的JNDI配置是否已更改?

共有1个答案

齐宗清
2023-03-14

你的思路是对的,但出于你的目的,我将从最新的8.0.0版本中获取该文件。x MQ客户端修复包。然后我会去技术说明,解释安装过程,并尝试。

我确信IBM有一个从服务器安装中获取JAR的过程,但是由于这些JAR的打包方式似乎不同,我会把钱花在为独立交付而设计和测试的软件包上,例如我在上面链接的那个。

顺便说一句,由于现在支持这一点,如果它不起作用,你可以打开一个PMR,告诉IBM你严格按照他们的指示,让他们和你一起完成修复。(然后在这里发布修复它的方法。)但是如果你只是去抓取随机的jar文件并希望它能起作用,他们不会这样做。

 类似资料:
  • 我做了这方面的所有工作:如何连接tomcat 7和mysql<br>但它仍然无法工作……为什么?我错过了什么? OS:Win7<br>Eclipse:J2EE Mars<br>Tomcat:Tomcat 8.0<br>java:1.8.0_73<br>数据库名称:测试<br>用户名:root<br>密码:123 (在TOMCAT_HOME/conf中)< br >(也在localhost-conf

  • 我试图在MySQL上设置一个非常简单的会话连接变量,但它没有任何作用。下面运行的查询不会导致任何错误,但不会更改MySQL连接的字符集。如果我在文件中将“collation\u server”和“character\u set\u server”的默认值配置为,而不是,那么字符集将变为,但我想知道为什么我不能从PHP脚本中更改连接字符集。 此查询显示语句没有影响。

  • 我设置了一个密钥库,并从openssl.com.获得了SSL证书。我遵循的确切步骤如下:https://drive.google.com/file/d/0B6PUGo7cBLcDTzdkc0pzT2pTMk0/view?usp=sharing 不幸的是,即使在严格按照tomcat的说明并与客户支持人员合作后,我的https连接也超时了。 tomcat似乎已启动并运行,正在监听端口443,但我不知道

  • 我正在尝试在Windows上为SSL配置Tomcat 8。 我遵循了这里的说明: https://www.mulesoft.com/tcat/tomcat-ssl 因此,我创建了密钥库: 和企业社会责任: 我从提供商那里拿回了根文件和新证书,并将它们安装在密钥库中: 然后在Tomcat的服务器上。xml我已取消注释并更新: 并重新启动,但当我转到: 我只是得到一个暂停,我被难住了。stackove

  • 我正在尝试在要部署在Tomcat 7中的Web应用程序中设置JNDI查找。我在文件中指定了以下属性: java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory,java.naming.factory.url.pkgs=org.jboss.naming:org.jnp.interfaces,java.naming.prov

  • 使用JNDI,我可以连接到ActiveMQ。但是当切换提供程序类时,它给了我以下异常。 Spring JNDI配置: 例外情况: null