当我运行以下程序时,它会给我jms.DetailedJMSException:JMSWMQ2020:无法连接到队列管理器''使用连接模式'客户端'并提供CCDT URL。有人可以帮我运行这个程序..
MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
// Config
cf.setHostName("192.163.1.173");
cf.setPort(1414);
cf.setTransportType( JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
cf.setQueueManager("TEST");
cf.setChannel("SYSTEM.DEF.SVRCONN");
MQQueueConnection connection = (MQQueueConnection) cf.createQueueConnection("mgm","mgm321");
MQQueueSession session = (MQQueueSession) connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
MQQueue queue = (MQQueue) session.createQueue("queue:///QUEUE4");
MQQueueSender sender = (MQQueueSender) session.createSender(queue);
MQQueueReceiver receiver = (MQQueueReceiver) session.createReceiver(queue);
long uniqueNumber = System.currentTimeMillis() % 1000;
JMSTextMessage message = (JMSTextMessage) session.createTextMessage("SimplePTP "+ uniqueNumber);
// Start the connection
connection.start();
sender.send(message);
System.out.println("Sent message:\\n" + message);
JMSMessage receivedMessage = (JMSMessage) receiver.receive(10000);
System.out.println("\\nReceived message:\\n" + receivedMessage);
sender.close();
receiver.close();
session.close();
connection.close();
这是错误的堆栈跟踪..
com.ibm.msg.client.jms.DetailedJMSException: JMSWMQ2020: Failed to connect to queue manager '' with connection mode 'Client' and supplied CCDT URL 'http://192.168.1.173', see linked exception for more information.
Check the queue manager is started and if running in client mode, check there is a listener running. Please see the linked exception for more information.
at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:578)
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:214)
at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:408)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:6398)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:5740)
at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl._createConnection(JmsConnectionFactoryImpl.java:293)
at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:234)
at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6016)
at com.ibm.mq.jms.MQConnectionFactory.createConnection(MQConnectionFactory.java:6065)
at IBMMessageSender.<init>(IBMMessageSender.java:32)
at IBMMessageSender.main(IBMMessageSender.java:21)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere 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:202)
... 14 more
Caused by: com.ibm.mq.jmqi.JmqiException: CC=2;RC=2278;AMQ9516: File error occurred. [1=java.io.IOException[Server returned HTTP response code: 403 for URL: http://192.168.1.173],3=http://192.168.1.173]
at com.ibm.mq.jmqi.system.internal.CCDT.parse(CCDT.java:344)
at com.ibm.mq.jmqi.system.internal.CCDT.<init>(CCDT.java:210)
at com.ibm.mq.jmqi.remote.impl.RemoteCCDT.<init>(RemoteCCDT.java:75)
at com.ibm.mq.jmqi.remote.api.RemoteFAP.getCcdt(RemoteFAP.java:512)
at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1623)
at com.ibm.mq.jmqi.remote.api.RemoteFAP.jmqiConnect(RemoteFAP.java:1287)
at com.ibm.mq.ese.jmqi.InterceptedJmqiImpl.jmqiConnect(InterceptedJmqiImpl.java:376)
at com.ibm.mq.ese.jmqi.ESEJMQI.jmqiConnect(ESEJMQI.java:560)
at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:344)
... 13 more
Caused by: java.io.IOException: Server returned HTTP response code: 403 for URL: http://192.168.1.173
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1839)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1440)
at java.net.URL.openStream(URL.java:1038)
at com.ibm.mq.jmqi.system.internal.CCDT$2.run(CCDT.java:313)
at java.security.AccessController.doPrivileged(Native Method)
at com.ibm.mq.jmqi.system.internal.CCDT.parse(CCDT.java:305)
... 21 more
答案 0 :(得分:1)
CCDT(客户端通道定义表)是一个定义MQ客户端连接属性的文件。所以这个CCDT URL应该引用这个文件。
查看代码似乎想要使用JMS,因此您要在JMS连接工厂中定义连接属性,在这种情况下,您不需要设置CCDT URL。
但是你的JMS属性似乎也不对。您可以在MQ安装下找到示例代码,例如C:\ Program Files(x86)\ IBM \ WebSphere MQ \ tools \ jms \ samples \ JMSProducer.java