Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 使用CCDT+的docker中的IBM MQ出现MQRC_客户端连接错误;弹簧靴_Spring Boot_Docker_Jms_Ibm Mq_Spring Jms - Fatal编程技术网

Spring boot 使用CCDT+的docker中的IBM MQ出现MQRC_客户端连接错误;弹簧靴

Spring boot 使用CCDT+的docker中的IBM MQ出现MQRC_客户端连接错误;弹簧靴,spring-boot,docker,jms,ibm-mq,spring-jms,Spring Boot,Docker,Jms,Ibm Mq,Spring Jms,我正在使用此IBM官方教程: 在docker中使用IBM®MQ Advanced for Developers可从该docker hub页面获得: MQ是通过以下命令启动的: docker run --name mq --env LICENSE=accept --env MQ_QMGR_NAME=QM1 --publish 1414:1414 --publish 9443:9443 --detach ibmcom/mq docker cp <container_id>:/mnt

我正在使用此IBM官方教程:

在docker中使用IBM®MQ Advanced for Developers可从该docker hub页面获得:

MQ是通过以下命令启动的:

docker run --name mq --env LICENSE=accept --env MQ_QMGR_NAME=QM1 --publish 1414:1414 --publish 9443:9443 --detach ibmcom/mq 
docker cp <container_id>:/mnt/mqm/data/qmgrs/QM1/@ipcc/AMQCLCHL.TAB <path_to_ccdt_path_on_my_computer>
它已启动并正在运行,我可以使用连接名称和频道信息连接到它:

ibm.mq.channel: DEV.ADMIN.SVRCONN
ibm.mq.connectionName: localhost(1414)
但是,当我尝试使用CCDT文件连接到它时,会出现错误。我使用以下命令获取此CCDT文件:

docker run --name mq --env LICENSE=accept --env MQ_QMGR_NAME=QM1 --publish 1414:1414 --publish 9443:9443 --detach ibmcom/mq 
docker cp <container_id>:/mnt/mqm/data/qmgrs/QM1/@ipcc/AMQCLCHL.TAB <path_to_ccdt_path_on_my_computer>
docker cp:/mnt/mqm/data/qmgrs/QM1/@ipcc/AMQCLCHL.TAB
我已设置正确的application.yml属性:

ibm:
  mq:
    ccdtUrl: file://<path_to_ccdt_path_on_my_computer>
ibm:
mq:
ccdtUrl:文件://
但我得到了这个错误:

com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2020: Failed to connect to queue manager 'QM1' with connection mode 'Client' and supplied CCDT URL 'AMQCLCHL.TAB', see linked exception for more information.
    at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:595)
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215)
    at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:424)
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8475)
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7815)
    at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl._createConnection(JmsConnectionFactoryImpl.java:303)
    at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:236)
    at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6016)
    at com.ibm.mq.jms.MQConnectionFactory.createConnection(MQConnectionFactory.java:6041)
    at org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:196)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:411)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.establishSharedConnection(AbstractJmsListeningContainer.java:379)
    at org.springframework.jms.listener.DefaultMessageListenerContainer.establishSharedConnection(DefaultMessageListenerContainer.java:818)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.doStart(AbstractJmsListeningContainer.java:291)
    at org.springframework.jms.listener.AbstractJmsListeningContainer.start(AbstractJmsListeningContainer.java:276)
    at org.springframework.jms.listener.DefaultMessageListenerContainer.start(DefaultMessageListenerContainer.java:612)
    at org.springframework.jms.config.JmsListenerEndpointRegistry.startIfNecessary(JmsListenerEndpointRegistry.java:242)
    at org.springframework.jms.config.JmsListenerEndpointRegistry.start(JmsListenerEndpointRegistry.java:205)
    at org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182)
    at org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53)
    at org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360)
    at org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158)
    at org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122)
    at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:879)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:161)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
    at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
    at Application.main(Application.java:11)
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2278' ('MQRC_CLIENT_CONN_ERROR').
    at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203)
    ... 31 common frames omitted
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2278
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1688)
    at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1273)
    at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect(InterceptedJmqiImpl.java:377)
    at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect(ESEJMQI.java:562)
    at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:357)
    ... 30 common frames omitted
com.ibm.msg.client.jms.DetailedJMSExException:JMSWMQ2020:无法使用连接模式“client”和提供的CCDT URL“AMQCLCHL.TAB”连接到队列管理器“QM1”,有关详细信息,请参阅链接异常。
位于com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:595)
位于com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:215)
位于com.ibm.msg.client.wmq.internal.WMQConnection.(WMQConnection.java:424)
位于com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8475)
位于com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7815)
位于com.ibm.msg.client.jms.admin.jmsconnectionfactorympl.\u createConnection(jmsconnectionfactorympl.java:303)
位于com.ibm.msg.client.jms.admin.jmsconnectionfactorympl.createConnection(jmsconnectionfactorympl.java:236)
位于com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6016)
位于com.ibm.mq.jms.MQConnectionFactory.createConnection(MQConnectionFactory.java:6041)
位于org.springframework.jms.support.JmsAccessor.createConnection(JmsAccessor.java:196)
位于org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:411)
位于org.springframework.jms.listener.AbstractJmsListeningContainer.establishSharedConnection(AbstractJmsListeningContainer.java:379)
位于org.springframework.jms.listener.DefaultMessageListenerContainer.establishSharedConnection(DefaultMessageListenerContainer.java:818)
位于org.springframework.jms.listener.AbstractJmsListeningContainer.doStart(AbstractJmsListeningContainer.java:291)
位于org.springframework.jms.listener.AbstractJmsListeningContainer.start(AbstractJmsListeningContainer.java:276)
位于org.springframework.jms.listener.DefaultMessageListenerContainer.start(DefaultMessageListenerContainer.java:612)
在org.springframework.jms.config.jmslienterendpointregistry.startifRequired(jmslienterendpointregistry.java:242)上
位于org.springframework.jms.config.JmsListenerEndpointRegistry.start(JmsListenerEndpointRegistry.java:205)
位于org.springframework.context.support.DefaultLifecycleProcessor.doStart(DefaultLifecycleProcessor.java:182)
位于org.springframework.context.support.DefaultLifecycleProcessor.access$200(DefaultLifecycleProcessor.java:53)
位于org.springframework.context.support.DefaultLifecycleProcessor$LifecycleGroup.start(DefaultLifecycleProcessor.java:360)
位于org.springframework.context.support.DefaultLifecycleProcessor.startBeans(DefaultLifecycleProcessor.java:158)
位于org.springframework.context.support.DefaultLifecycleProcessor.onRefresh(DefaultLifecycleProcessor.java:122)
位于org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:879)
位于org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.finishRefresh(ServletWebServerApplicationContext.java:161)
位于org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:549)
位于org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:140)
位于org.springframework.boot.SpringApplication.refresh(SpringApplication.java:775)
位于org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:316)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:1260)
位于org.springframework.boot.SpringApplication.run(SpringApplication.java:1248)
位于Application.main(Application.java:11)
原因:com.ibm.mq.MQException:JMSCMQ0001:ibm mq调用失败,代码为“2”(“MQCC_失败”)原因为“2278”(“MQRC_客户端连接错误”)。
位于com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203)
... 省略31个公共框架
原因:com.ibm.mq.jmqi.jmqi异常:CC=2;RC=2278
位于com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1688)
位于com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1273)
在com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect上(InterceptedJmqiImpl.java:377)
位于com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect(ESEJMQI.java:562)
位于com.ibm.msg.client.wmq.internal.WMQConnection.(WMQConnection.java:357)
... 省略30个公共框架
官方的疑难解答在这里:,但它说:

“它也出现在Java中™ 指定客户端通道定义表(CCDT)以确定通道名称,但找不到该表本身时的应用程序。“

但是,如果找到了表文件,那么如果我故意错拼文件名,就会得到一个FileNotFoundException


那么,我缺少什么呢?

您发现的
2278 MQRC_CLIENT_CONN_错误是因为应用程序找不到与指定的队列管理器名称匹配的通道

2540 MQRC\u UNKNOWN\u CHANNEL\u NAME
错误是因为通过设置通道
SYSTEM.DEF.CLNTCONN
QMNAME
字段,您现在正试图连接到名为
SYSTEM.DEF.CLNTCONN
SVRCONN
通道