Java JMSWMQ2020:未能连接到队列管理器

Java JMSWMQ2020:未能连接到队列管理器,java,jms,ibm-mq,Java,Jms,Ibm Mq,我正在尝试使用ccdt.tab文件连接到队列管理器。 以下是我尝试过的: String CHANNEL_TABLE_PATH = "/usr/dev/ccdt.tab"; URL chanTableUrl = new URL("file://"+ CHANNEL_TABLE_PATH); connectionFactory.setCCDTURL(chanTableUrl); connectionFactory.setQueueManager("*"); MQQueueConnection con

我正在尝试使用ccdt.tab文件连接到队列管理器。 以下是我尝试过的:

String CHANNEL_TABLE_PATH = "/usr/dev/ccdt.tab";
URL chanTableUrl = new URL("file://"+ CHANNEL_TABLE_PATH);
connectionFactory.setCCDTURL(chanTableUrl);
connectionFactory.setQueueManager("*");
MQQueueConnection connection = (MQQueueConnection) connectionFactory.createQueueConnection();
connection.start();
这是我的ccdt.tab中的内容

DIS CHL(*) QMNAME CONNAME
Display Channel details.
   CHANNEL(C.TEST.1)                     CHLTYPE(CLNTCONN)
   CONNAME(host1.test.com(1511), host2.test.com(1512))   QMNAME(QQ)
Display Channel details.
   CHANNEL(C.TEST.2)            CHLTYPE(CLNTCONN)
   CONNAME( )                              QMNAME( )
但是,我确实在队列连接上遇到了错误: 线程“main”java.lang.Exception中的异常:JMSWMQ2020:无法使用连接模式“Client”和提供的CCDT URL“file:/use/test/CCDT.tab”连接到队列管理器“*”,有关详细信息,请参阅链接异常

我试图更改为:
setQueueManager(“*QUEMANAGER”)
setQueueManager(“*”
setQueueManager(“QMGRNAME”)
它返回了相同的错误。我还检查了ssl连接,它运行正常

此外,我尝试使用以下代码连接到MQ服务器,它工作得非常好:

connectionFactory.setConnectionNameList("host1.test.com(1511), host2.test.com(1512)");
connectionFactory.setClientReconnectOptions(67108864);
connectionFactory.setClientReconnectTimeout(1800);
connectionFactory.setQueueManager("QQ");
connectionFactory.setChannel("C.TEST.1");
MQQueueConnection connection = (MQQueueConnection) connectionFactory_.createQueueConnection();
connection.start();
有人知道出了什么问题以及如何修复吗

ps:我确实看到了那些帖子:

以下是当I
setQueueManager(“*”
)时链接的异常和异常打印输出:

以下是我设置队列管理器(“QQ”)时链接的异常和异常打印输出:


指定
setQueueManager(“*”)
时,错误为:

AMQ9204: Connection to host '' rejected.
JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2058' ('MQRC_Q_MGR_NAME_ERROR').
这是因为IBM MQ可以解析CCDT中的两个通道之一。通道
C.TEST.2
没有
CONNAME
,因此当MQ选择通道时,它会导致上述错误。如果您多次尝试连接,如果它选择通道
C.TEST.1
,则有时可能会成功



指定
setQueueManager(“QQ”)
时,错误为:

AMQ9204: Connection to host '' rejected.
JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2058' ('MQRC_Q_MGR_NAME_ERROR').
这是因为远程队列管理器名称不是
QQ


解决此问题有两种选择:

  • 使用
    setQueueManager(“*QQ”)
    ,这将导致MQ使用
    QQ
    通道,但使用前导的
    *
    ,它将允许您连接到在
    CONNAME
    中指定的主机和端口上侦听的任何队列管理器

  • 如果需要,也可以使用
    setQueueManager(“*”
    ),但需要使用MQ v8或更高版本
    runmqsc
    来编辑CCDT并删除第二个通道
    DELETE CHL(C.TEST.2)
    。通过这样做,
    *
    只能解析为剩下的单个通道
    QQ
    ,并且还允许您连接到在
    CONNAME
    中指定的主机和端口上侦听的任何队列管理器


  • @这里没有任何链接。我有ex.getMessage(),但没有链接显示嗨,我尝试了setQueueManager(“QQ”)和setQueueManager(“*”),但得到了相同的错误。我确实在我的帖子中提到过。@JoshMc hi,我在链接的异常代码中添加了hi,我在setQueueManager(“AA”)时添加了新的部分。此外,我无法控制ccdt.tab文件,无法对其进行编辑。