com.ibm.mq.MQException: MQJE001: код завершения '2', причина '2035' - PullRequest
2 голосов
/ 25 января 2012

Я создаю приложение Java, которое должно иметь возможность подключаться к администратору очередей IBM WebSphere MQ, и я не могу понять, почему я продолжаю получать эту ошибку.

Я уже предоставил права администратора для своего идентификатора пользователя, используя setmqaut через MQ Explorer.Я также определил MCAUSER в своем канале и также связал пользователя с группой MQ Windows.

Может кто-нибудь дать краткий учебник / пример того, как подключить программу Java с установкой WebSphere MQ всреда Windows?

1 Ответ

4 голосов
/ 25 января 2012

Если вы установили MCAUSER в канале, это переопределяет любой идентификатор, представленный клиентом.Если вы все еще получаете 2035, то есть две возможности.Во-первых, идентификатор в MCAUSER не был правильно авторизован с помощью команд setmqaut.Второе (по крайней мере, для Windows) - это неправильный идентификатор.Например, если определение канала имеет MCAUSER(userx) вместо MCAUSER('userx@domain'), то вполне возможно, что представленный идентификатор не совпадает с идентификатором SID, который разрешает WMQ.Это может произойти, когда userx определено на ноутбуке и на сервере WMQ.Сервер должен быть в состоянии разрешить идентификатор, представленный для SID, который идет с ним.

Для WMQ v7.1 существуют дополнительные соображения относительно правил CHLAUTH.Если представленный идентификатор имеет права администратора, по умолчанию WMQ заблокирует его на всех каналах.Это связано с тем, что административный идентификатор имеет полный доступ к WMQ и может удаленно выполнять код на хост-сервере QMgr, используя сервисы WMQ или функции запуска.Поэтому, если у вас есть WMQ v7.1, вам нужно либо разрешить доступ администратора WMQ на желаемом канале, либо использовать неадминистративный идентификатор пользователя для подключения.

Наконец, самый простой способ отладить все это - включитьавторизуйте события на QMgr и установите SupportPac MS0P в WMQ Explorer.Это будет генерировать сообщение о событии каждый раз, когда появляется 2035, а затем плагин MS0P будет анализировать его в удобочитаемом формате.Сообщение сообщит вам ...

  • Какой вызов API не выполнен.(CONNECT, OPEN, CLOSE)
  • Параметры, указанные в вызове API
  • Идентификатор, вызывающий вызов API
  • Объект, к которому относится APIбыл сделан звонок

Это может помочь определить, предоставили ли вы все необходимые разрешения.Например, классы Java и JMS будут запрашивать каждый объект, которого они касаются.Так они обнаруживают имя DLQ при подключении или имя BOQNAME при открытии очереди.Поэтому, если вы не указали +inq в QMgr и очереди, вы получите 2035, и в сообщении о событии будет показан объект и использованные опции.Точно так же, если вы читаете подозрительное сообщение, и у ID нет прав на очередь отклонения или мертвую очередь, то вы получите 2035, который появляется (пока вы не посмотрите на сообщение о событии), который произошел в очереди, из которой вы имеетебыли счастливо потреблять сообщения.Поэтому обязательно включите события Auth и используйте MS0P.

Если вы хотите дружественное руководство по безопасности WMQ, есть несколько презентаций конференции, заархивированных здесь .

...