Ошибка MQRC_NOT_AUTHORIZED при подключении к IBM MQ с использованием MQ JMS - PullRequest
0 голосов
/ 06 января 2020

Я не могу подключиться к IBM MQ с использованием классов MQ для JMS из моего клиента java. В журнале ошибок указывается

com.ibm.msg.client.jms.DetailedJMSSecurityRuntimeException: JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'TESTQUEUE' with connection mode 'Client' and host name 'xxxx'
Caused by: com.ibm.mq.MQException: JMSCMQ0001: IBM MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').

У меня нет учетных данных, так как аутентификация не включена. Мое другое приложение, которое пытается подключиться к IBM MQ с использованием классов MQ для java, работает нормально. Я что-то здесь упускаю?

Я прочитал все другие посты, связанные с этой ошибкой, и провел какое-то исследование, но у меня нигде нет правильного решения, и поэтому я публикую этот вопрос. Дайте мне знать, если вам нужна дополнительная информация

Редактировать: У меня нет доступа к AMQERR01.LOG / server или MQExplorer.

IBM MQ Queue manager version: 8.0 .0.11

Классы IBM MQ для JAR JAR: com.ibm.mq.allclient-9.1.0.0.jar

Пример кода:

jmsConFac.connectionsetIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
jmsConFac.setBooleanProperty(WMQConstants.USER_AUTHENTICATION_MQCSP, false);
JMSContext context = jmsConFac.createContext();

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Наконец, я избавился от проблемы, когда изменил название канала. Ранее мое имя канала было SYSTEM.DEF.SVRCONN . Я изменил название канала на другое (созданное кем-то из административной команды). Поэтому в основном проблема заключалась в том, что у канала нет доступа для подключения.

0 голосов
/ 06 января 2020

Работает ли это, если вы пропустите USER_AUTHENTICATION? Примерно так должно работать:

  // Create a connection factory
  JmsFactoryFactory ff = JmsFactoryFactory.getInstance(WMQConstants.WMQ_PROVIDER);
  JmsConnectionFactory cf = ff.createConnectionFactory();

  // Set the properties
  cf.setStringProperty(WMQConstants.WMQ_HOST_NAME, host);
  cf.setIntProperty(WMQConstants.WMQ_PORT, port);
  //cf.setStringProperty(WMQConstants.WMQ_CHANNEL, channel);
  cf.setIntProperty(WMQConstants.WMQ_CONNECTION_MODE, WMQConstants.WMQ_CM_CLIENT);
  cf.setStringProperty(WMQConstants.WMQ_QUEUE_MANAGER, queueManagerName);

  // Create JMS objects
  connection = cf.createConnection();
  System.out.println("Connected!");
...