1

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

当两个应用程序都连接到同一个本地服务器时,MQ 配置在本地运行良好。

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

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

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

测试时,在服务器 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)
4

2 回答 2

0

我认为这里有些混乱。

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

因此,如果服务器 2 上的连接工厂已经配置了 CCDT,那么当服务器 1 使用来自服务器 2 的连接工厂进行连接尝试时,它也会使用 CCDT,因为这就是 JNDI 中的定义所包含的内容。

那有意义吗?

我建议你:

a) 在没有配置 CCDT 的情况下,在远程 JNDI 中使用不同的名称创建第二个连接工厂。例如,您可以使用“ccdtCF”和“cf”。然后,您将应用程序服务器上的应用程序配置为使用适当的 cf.

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

c) 确保所有客户端在所有服务器上以相同的方式连接。所有 CCDT(并且 CCDT 需要位于同一文件系统位置)或没有 CCDT 连接。

于 2014-07-03T09:18:49.817 回答
0

您有以下解决方案:

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

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

于 2014-07-03T09:30:54.200 回答