WSO2 EI 6.3.0 не может подключиться к IBM Websphere MQ v8 с помощью JMS

Я пытаюсь подключить WSO2 Enterprise Integrator к IBM Websphere MQ v 8.0.0.5 с помощью JMS Transport. Цель состоит в том, чтобы иметь возможность получать/публиковать сообщения в очередях, созданные в IBM Websphere MQ через WSO2 Enterprise Integrator с использованием протокола JMS.

Ссылка:

Я перешел по этой ссылке, предоставленной Официальная документация WSO2. Я в точности выполнил все шаги, но когда я развертываю JMS Listener Proxy, он становится сбойным сервисом и показывает следующую ошибку на консоли:

Трассировка стека ошибок:

com.ibm.mq.MQException: JMSCMQ0001: WebSphere 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)
    at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:412)
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:8475)
    at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7913)
    at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl._createConnection(JmsConnectionFactoryImpl.java:299)
    at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:236)
    at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6024)
    at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:136)
    at com.ibm.mq.jms.MQQueueConnectionFactory.createConnection(MQQueueConnectionFactory.java:209)
    at org.apache.axis2.transport.jms.JMSUtils.createConnection(JMSUtils.java:786)
    at org.apache.axis2.transport.jms.JMSListener.checkJMSConnection(JMSListener.java:155)
    at org.apache.axis2.transport.jms.JMSListener.startEndpoint(JMSListener.java:99)
    at org.apache.axis2.transport.jms.JMSListener.startEndpoint(JMSListener.java:54)
    at org.apache.axis2.transport.base.AbstractTransportListenerEx.startListeningForService(AbstractTransportListenerEx.java:154)
    at org.apache.axis2.transport.base.AbstractTransportListener.internalStartListeningForService(AbstractTransportListener.java:213)
    at org.apache.axis2.transport.base.AbstractTransportListener$2.serviceAdded(AbstractTransportListener.java:126)
    at org.apache.axis2.transport.base.tracker.AxisServiceTracker.serviceAdded(AxisServiceTracker.java:212)
    at org.apache.axis2.transport.base.tracker.AxisServiceTracker$1.serviceUpdate(AxisServiceTracker.java:98)
    at org.apache.axis2.engine.AxisConfiguration.notifyObservers(AxisConfiguration.java:666)
    at org.apache.axis2.engine.AxisConfiguration.addServiceGroup(AxisConfiguration.java:420)
    at org.apache.axis2.engine.AxisConfiguration.addService(AxisConfiguration.java:350)
    at org.apache.synapse.core.axis2.ProxyService.buildAxisService(ProxyService.java:750)
    at org.wso2.carbon.proxyadmin.service.ProxyServiceAdmin.addProxyService(ProxyServiceAdmin.java:273)
    at org.wso2.carbon.proxyadmin.service.ProxyServiceAdmin.addProxy(ProxyServiceAdmin.java:710)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

Код службы прокси, как указано в документации:

<proxy xmlns="http://ws.apache.org/ns/synapse"
       name="MyJMSProxy"
       transports="jms"
       startOnLoad="true"
       trace="disable">
   <description/>
   <target>
      <inSequence>
         <log level="full"/>
         <drop/>
      </inSequence>
   </target>
   <parameter name="transport.jms.Destination">LocalQueue1</parameter>
</proxy>

Конфигурация файла Axis2. Ниже приведены конфигурации axis2 для транспортного приемника и транспортного приемника.

Транспортный приемник:

    <transportReceiver name="jms" class="org.apache.axis2.transport.jms.JMSListener">
  <parameter name="default" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">file:/C:/jndidirectory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">MyQueueConnectionFactory</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    <parameter name="transport.jms.UserName" locked="false">omerk</parameter>
    <parameter name="transport.jms.Password" locked="false">password</parameter>
  </parameter>
 
 
  <parameter name="myQueueConnectionFactory1" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">file:/C:/jndidirectory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">MyQueueConnectionFactory</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    <parameter name="transport.jms.UserName" locked="false">omerk</parameter>
    <parameter name="transport.jms.Password" locked="false">password</parameter>
  </parameter>
</transportReceiver>

Прослушиватель транспорта:

<transportSender name="jms" class="org.apache.axis2.transport.jms.JMSSender">
  <parameter name="default" locked="false">
    <parameter name="vender.class.loader.enabled">false</parameter>
    <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">file:/C:/jndidirectory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">MyQueueConnectionFactory</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    <parameter name="transport.jms.UserName" locked="false">omerk</parameter>
    <parameter name="transport.jms.Password" locked="false">password</parameter>
  </parameter>
 
  <parameter name="myQueueConnectionFactory1" locked="false">
    <parameter name="java.naming.factory.initial" locked="false">com.sun.jndi.fscontext.RefFSContextFactory</parameter>
    <parameter name="java.naming.provider.url" locked="false">file:/C:/jndidirectory</parameter>
    <parameter name="transport.jms.ConnectionFactoryJNDIName" locked="false">MyQueueConnectionFactory</parameter>
    <parameter name="transport.jms.ConnectionFactoryType" locked="false">queue</parameter>
    <parameter name="transport.jms.UserName" locked="false">omerk</parameter>
    <parameter name="transport.jms.Password" locked="false">password</parameter>
  </parameter>
</transportSender>

Исследования на данный момент:

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


person omer khalid    schedule 14.03.2019    source источник
comment
Важным файлом является ваш файл axis2.xml. Отредактируйте свой вопрос и добавьте его.   -  person Roger    schedule 14.03.2019
comment
@Roger Я обновил вопрос с конфигурацией оси 2.   -  person omer khalid    schedule 14.03.2019
comment
У вас есть файл .bindings, на который указывает java.naming.provider.url? И разве это значение не должно быть file:/C:/jndidirectory? Что вы поместили в файл MQ JNDI? Покажи свои команды. Кроме того, наличие пробела в имени пользователя, вероятно, неправильно.   -  person Roger    schedule 15.03.2019
comment
@ Роджер, да, у меня есть файл привязок в указанном месте. Я также обновил местоположение файла. Я написал это, потому что это упоминается в документации wso2. Но тоже не работает. Имя пользователя также обновлено, но это также не решило проблему. Где я могу найти файл MQ JNDI.   -  person omer khalid    schedule 18.03.2019
comment
.bindings — это файл MQ JNDI. Вам нужно показать команды, которые вы использовали для создания записей QCF и Q в файле MQ JNDI.   -  person Roger    schedule 18.03.2019
comment
Я создал файл .bindings через Webshpere MQ. Не по командам. Вы можете обратиться к разделу: Создать файл .bindings в приведенной выше документации.   -  person omer khalid    schedule 19.03.2019
comment
Я полагаю, вы имеете в виду MQ Explorer. Пока вы не покажете мне команды или не запустите DIS QCF() и DIS Q() через JMSAdmin.bat (или JMSAdmin.sh) и не обновите вопрос, я ничего не смогу сделать.   -  person Roger    schedule 19.03.2019


Ответы (1)


Устранение неполадок

Для устранения неполадок, когда я проверял журналы ошибок IBM Websphere MQ. IT выдавал следующую ошибку:

AMQ5534: User ID 'omerk' authentication failed

EXPLANATION:
The user ID and password supplied by the 'carbon.bootstrap.Bootstrap' program
could not be authenticated. 

Решение:

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

ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) AUTHTYPE(IDPWOS) CHCKCLNT(NONE)

REFRESH SECURITY TYPE(CONNAUTH)

ЭТО работало для меня и решило мою проблему.

person omer khalid    schedule 21.03.2019