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>" />