MQ CCDT AMQ9516 FileNotFoundException

时间:2014-07-03 00:58:37

标签: java websphere ibm-mq ibm-was

我正在配置Web应用程序以通过WMQ连接到另一个Web应用程序。

当两个应用程序连接到同一本地服务器时,MQ配置在本地工作正常。

但是,当我在自己的服务器上部署每个应用程序时,我遇到了CCDT错误。

服务器1 - 通过远程JNDI连接到服务器2

服务器2 - 保存WMQ连接工厂,队列和激活规范。

测试时,在Server 1日志中,它会显示以下异常消息。令我困惑的是,当服务器2被配置为通过CCDT连接到MQ时,服务器1如何查找TAB文件。此外,服务器2不包含任何例外。

任何想法我做错了什么配置?

Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2278;AMQ9516: File error occurred. [1=java.io.FileNotFoundException[\ccdt\CCDT.tab (The system cannot find the path specified.)],3=file:/ccdt/CCDT.tab]
    at com.ibm.mq.jmqi.system.internal.CCDT.parse(CCDT.java:333)
    at com.ibm.mq.jmqi.system.internal.CCDT.<init>(CCDT.java:191)
    at com.ibm.mq.jmqi.remote.internal.system.RemoteCCDT.<init>(RemoteCCDT.java:68)
    at com.ibm.mq.jmqi.remote.internal.RemoteFAP.getCcdt(RemoteFAP.java:413)
    at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1580)
    at com.ibm.mq.jmqi.remote.internal.RemoteFAP.jmqiConnect(RemoteFAP.java:1286)
    at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:367)

2 个答案:

答案 0 :(得分:0)

我认为这里有一些混乱。

您的远程JNDI调用创建指向服务器2的初始上下文,这意味着您正在查找服务器2上的连接工厂。

因此,如果服务器2上的连接工厂配置了CCDT,那么当服务器1使用服务器2的连接工厂进行连接尝试时,它也将使用CCDT,因为它是什么JNDI中的定义包含。

这有意义吗?

我建议您:

a)在没有配置CCDT的情况下,使用不同的名称在远程JNDI中创建第二个连接工厂。所以你可以拥有&#39; ccdtCF&#39;和&#39; cf&#39;例如。然后,您可以在应用程序服务器上配置应用程序以使用相应的cf。

b)在您希望配置的每台服务器上使用本地JNDI。

c)确保所有客户端在所有服务器上以相同的方式连接。要么所有CCDT(和CCDT都需要在同一个文件系统位置),要么没有CCDT连接。

答案 1 :(得分:0)

您有以下解决方案:

  • 您可以使用远程JNDI,但是您需要在本地节点上所有必需的资源也在相同的位置,因此在您的情况下\ ccdt \ CCDT.tab文件必须在同一路径上可用
  • 重新配置连接工厂以包含所有详细信息,而不是ccdt。
  • 使用本地资源定义 - 双方创建资源,不仅在远程上创建资源,而且从本地服务器/集群获取资源。因此,如果您的server1正在发送消息,您应该创建连接工厂并在那里排队。如果你在集群(server2)上有MDB,你应该在那里创建队列和激活规范。

通常更容易在使用它的应用程序本地创建资源。