我以前曾在独立的应用程序中运行过类似的代码,但现在有了MQ版本8,这给了例外。出现错误
com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013:...
Cause by
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').
我已经尝试通过提供以下命令来禁用CHLAUTH
:
ALTER QMGR CHLAUTH (DISABLED)
1 : ALTER QMGR CHLAUTH (DISABLED)
AMQ8005: WebSphere MQ queue manager changed.
:
MQQueueConnectionFactory cf = new MQQueueConnectionFactory();
// Config
cf.setHostName("localhost");
cf.setPort(1414);
cf.setTransportType(JMSC.MQJMS_TP_CLIENT_MQ_TCPIP);
cf.setQueueManager("QM_TEST");
cf.setChannel("DEV.APP.SVRCONN");
MQQueueConnection connection = (MQQueueConnection)
cf.createQueueConnection();
MQQueueSession session = (MQQueueSession)
connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
MQQueue queue = (MQQueue)
session.createQueue("queue:///Q1");
MQQueueSender sender = (MQQueueSender)
session.createSender(queue);
MQQueueReceiver receiver = (MQQueueReceiver)
session.createReceiver(queue);
long uniqueNumber = System.currentTimeMillis() % 1000;
JMSTextMessage message = (JMSTextMessage)
session.createTextMessage("Client Message "+ 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();
即使如上所述已经禁用了CHLAUTH,我也得到了异常
com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'QM_TEST' with connection mode 'Client' and host name 'localhost(1414)'.
Please check if the supplied username and password are correct on the QueueManager to which you are connecting.
at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:531)
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.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:111)
at com.ibm.mq.jms.MQQueueConnectionFactory.createConnection(MQQueueConnectionFactory.java:187)
at SimplePointToPoint.main(SimplePointToPoint.java:31)
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:203)
... 9 more
添加AMQERR01.LOG日志文件内容
----- amqxfdcp.c : 868 --------------------------------------------------------
10/1/2019 23:07:44 - Process(3172.4) User(MUSR_MQADMIN) Program(amqzmur0.exe)
Host(MYNEW-PC) Installation(Installation1)
VRMF(8.0.0.5)
AMQ6119: An internal WebSphere MQ error has occurred ()
EXPLANATION:
MQ detected an unexpected error when calling the operating system. The MQ error
recording routine has been called.
ACTION:
Use the standard facilities supplied with your system to record the problem
identifier and to save any generated output files. Use either the MQ Support
site: http://www.ibm.com/software/integration/wmq/support/, or IBM Support
Assistant (ISA): http://www.ibm.com/software/support/isa/, to see whether a
solution is already available. If you are unable to find a match, contact your
IBM support center. Do not discard these files until the problem has been
resolved.
----- amqxfdcp.c : 829 --------------------------------------------------------
10/1/2019 23:07:44 - Process(3172.4) User(MUSR_MQADMIN) Program(amqzmur0.exe)
Host(MYNEW-PC) Installation(Installation1)
VRMF(8.0.0.5)
AMQ6184: An internal WebSphere MQ error has occurred on queue manager QM_TEST.
EXPLANATION:
An error has been detected, and the WebSphere MQ error recording routine has
been called. The failing process is process 3172.
ACTION:
Use the standard facilities supplied with your system to record the problem
identifier and to save any generated output files. Use either the MQ Support
site: http://www.ibm.com/software/integration/wmq/support/, or IBM Support
Assistant (ISA): http://www.ibm.com/software/support/isa/, to see whether a
solution is already available. If you are unable to find a match, contact your
IBM support center. Do not discard these files until the problem has been
resolved.
----- amqxfdcp.c : 868 --------------------------------------------------------
10/2/2019 00:13:25 - Process(6536.5) User(MUSR_MQADMIN) Program(amqzmur0.exe)
Host(MYNEW-PC) Installation(Installation1)
VRMF(8.0.0.5)
AMQ6125: An internal WebSphere MQ error has occurred.
EXPLANATION:
An internal error has occurred with identifier 20806248. This message is
issued in association with other messages.
ACTION:
Use the standard facilities supplied with your system to record the problem
identifier and to save any generated output files. Use either the MQ Support
site: http://www.ibm.com/software/integration/wmq/support/, or IBM Support
Assistant (ISA): http://www.ibm.com/software/support/isa/, to see whether a
solution is already available. If you are unable to find a match, contact your
IBM support center. Do not discard these files until the problem has been
resolved.
----- amqxfdcp.c : 829 --------------------------------------------------------
10/2/2019 00:13:25 - Process(6536.5) User(MUSR_MQADMIN) Program(amqzmur0.exe)
Host(MYNEW-PC) Installation(Installation1)
VRMF(8.0.0.5)
AMQ6184: An internal WebSphere MQ error has occurred on queue manager QM_TEST1.
EXPLANATION:
An error has been detected, and the WebSphere MQ error recording routine has
been called. The failing process is process 6536.
ACTION:
Use the standard facilities supplied with your system to record the problem
identifier and to save any generated output files. Use either the MQ Support
site: http://www.ibm.com/software/integration/wmq/support/, or IBM Support
Assistant (ISA): http://www.ibm.com/software/support/isa/, to see whether a
solution is already available. If you are unable to find a match, contact your
IBM support center. Do not discard these files until the problem has been
resolved.
----- amqxfdcp.c : 868 --------------------------------------------------------
下面是作为客户端连接到MQ服务器的两种方法。
1)下面的客户端调用使用默认的用户身份创建一个队列连接。
public QueueConnection createQueueConnection( ) throws JMSException
2)下面的客户端调用使用默认的用户身份创建一个队列连接。
public QueueConnection createQueueConnection( String userid,String password) throws JMSException
由于您使用了第一种方法,因此似乎已将默认的系统用户ID发送到MQ服务器,并且由于您将CHCKCLNT设置为OPTIONAL,因此队列管理器正在检查正确的用户名/密码对。结果,您得到的是MQRC2035。因此,您可以通过将CHCKCLNT的值更新为NONE来禁用队列管理器正在执行的验证,从而解决此问题。
查找createQueueConnection方法的链接=> https://www.ibm.com/support/knowledgecenter/en/SSFKSJ_7.1.0/com.ibm.mq.javadoc.doc/WMQJMSClasses/com/ibm/mq/jms/MQQueueConnectionFactory.html