您好,我正在尝试从 Tomcat 8 连接 WebSphere IBM MQ 7.5.0.7 连接工厂。启动 tomcat 服务器时,我们加载 spring XML,从中我们连接到 IBM MQ 连接工厂。
下面是spring xml中的代码。
<bean name="jmsConnectionFactory" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="java:comp/env/JMS/QFX_PF1UATMQCF" />
</bean>
Tomcat 中 Context.xml 中的代码。
<Resource name="JMS/QFX_PF1UATMQCF"
auth="Container"
type="com.ibm.mq.jms.MQQueueConnectionFactory"
factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory"
description="JMS Queue Connection Factory for sending messages"
HOST="some hostname"
PORT="1425"
CHAN="SYSTEM.DEF.SVRCONN"
TRAN="1"
QMGR="EUQFXP7A"/>
下面是我在启动 tomcat 时遇到的异常。
Cannot resolve reference to bean 'jmsConnectionFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jmsConnectionFactory' defined in class path resource : Invocation of init method failed; nested exception is javax.naming.NamingException: Could not create resource factory instance [Root exception is java.lang.NoClassDefFoundError: javax/jms/JMSException]
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
最佳答案
您至少需要将以下 JAR 文件复制到 Tomcat(例如 $CATALINA_BASE/lib
):
正如@JoshMc 提到的,您不应该再使用 MQ 7.5。
启动 Tomcat 时,您可能会在 catalina.log
中看到 WARNING
消息,如下所示:
24-Feb-2018 22:06:40.473 WARNING [localhost-startStop-1] org.apache.tomcat.util.scan.StandardJarScanner.processURLs Failed to scan [file:.../lib/jms.jar] from classloader hierarchy
java.io.FileNotFoundException: .../lib/jms.jar (The system cannot find the file specified)
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:219)
您可以通过将 MQ jar 添加到 catalina.properties
中的 tomcat.util.scan.StandardJarScanFilter.jarsToSkip
属性来消除这些警告。
关于spring - jms 连接工厂 javax.naming.NamingException : Could not create resource factory instance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48947349/