QueueConnectionFactory 查找在以下配置时失败
QueueConnectionFactory look up failed upon below configuration
我已经为 tomcat 服务器配置了以下不同的文件,它在 Weblogic 中工作,在迁移到 tomcat 期间我无法使用 JNDI。
你能推荐我可以检查的任何其他选项吗?
代码
Context ict = new InitialContext();
Context envctx= (Context) ict.lookup("java:comp/env");
logger.info("Context : "+envctx);
factory = (QueueConnectionFactory) envctx
.lookup("jms/JNDI_NAME");
logger.info("Factory : "+factory);
错误
QueueConnectionFactory look up failed:: javax.naming.NamingException: Cannot create resource instance:-javax.naming.NamingException: Cannot create resource instance
Server.xml
<Resource name="JNDI_NAME" auth="Container"
type="com.ibm.mq.jms.MQQueueConnectionFactory" factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory"
HOST="<ip>"
PORT="<port>"
CHAN="<mqChan>"
QMGR="<QueueMag>"/>
Web.xml
<resource-ref>
<res-ref-name>jms/JNDI_NAME</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
我认为您的 JNDI 名称可能是在您的 Server.xml 资源中配置为 'name' 的名称。也许试试这个:
factory = (QueueConnectionFactory) envctx.lookup("JNDI_NAME");
经过研究,我发现通过在上下文 XML 中添加以下块,它可以代替服务器工作 XML
上下文xml
<Resource
name="jms/<JNDI_NAME>"
auth="Container"
type="com.ibm.mq.jms.MQQueueConnectionFactory"
factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory"
description="JMS Queue Connection Factory for sending messages"
HOST="<ip>"
PORT="<port>"
CHAN="<mqChan>"
QMGR="<QueueMag> />
<Resource
name="jms/remote-sds-input-queue-fjp"
auth="Container"
type="com.ibm.mq.jms.MQQueue"
factory="com.ibm.mq.jms.MQQueueFactory"
description="JMS Queue for receiving messages from Dialog"
QU="<QueueName>" />
我已经为 tomcat 服务器配置了以下不同的文件,它在 Weblogic 中工作,在迁移到 tomcat 期间我无法使用 JNDI。
你能推荐我可以检查的任何其他选项吗?
代码
Context ict = new InitialContext();
Context envctx= (Context) ict.lookup("java:comp/env");
logger.info("Context : "+envctx);
factory = (QueueConnectionFactory) envctx
.lookup("jms/JNDI_NAME");
logger.info("Factory : "+factory);
错误
QueueConnectionFactory look up failed:: javax.naming.NamingException: Cannot create resource instance:-javax.naming.NamingException: Cannot create resource instance
Server.xml
<Resource name="JNDI_NAME" auth="Container"
type="com.ibm.mq.jms.MQQueueConnectionFactory" factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory"
HOST="<ip>"
PORT="<port>"
CHAN="<mqChan>"
QMGR="<QueueMag>"/>
Web.xml
<resource-ref>
<res-ref-name>jms/JNDI_NAME</res-ref-name>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
我认为您的 JNDI 名称可能是在您的 Server.xml 资源中配置为 'name' 的名称。也许试试这个:
factory = (QueueConnectionFactory) envctx.lookup("JNDI_NAME");
经过研究,我发现通过在上下文 XML 中添加以下块,它可以代替服务器工作 XML
上下文xml
<Resource
name="jms/<JNDI_NAME>"
auth="Container"
type="com.ibm.mq.jms.MQQueueConnectionFactory"
factory="com.ibm.mq.jms.MQQueueConnectionFactoryFactory"
description="JMS Queue Connection Factory for sending messages"
HOST="<ip>"
PORT="<port>"
CHAN="<mqChan>"
QMGR="<QueueMag> />
<Resource
name="jms/remote-sds-input-queue-fjp"
auth="Container"
type="com.ibm.mq.jms.MQQueue"
factory="com.ibm.mq.jms.MQQueueFactory"
description="JMS Queue for receiving messages from Dialog"
QU="<QueueName>" />