【问题标题】:WSO2 EI 6.3.0 unable to connect with IBM Websphere MQ v8 using JMSWSO2 EI 6.3.0 无法使用 JMS 连接 IBM Websphere MQ v8
【发布时间】:2019-03-22 03:24:54
【问题描述】:

我正在尝试通过 JMS Transport 将 WSO2 Enterprise Integrator 与 IBM Websphere MQ v 8.0.0.5 连接起来。目的是能够通过 WSO2 Enterprise Integrator 使用 JMS 协议在 IBM Websphere MQ 中创建的队列上接收/发布消息。

链接:

我关注了 WSO2 官方文档提供的 link。我完全按照所有步骤操作,但是当我部署 JMS 侦听器代理时,它变成了一个 faulty 服务,它在控制台上显示以下错误:

错误堆栈跟踪:

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 文件配置: 以下是传输接收器和传输侦听器的轴 2 配置。

传输接收器:

    <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>

迄今为止的研究:

我尝试用谷歌搜索它,显然它显示它无法找出队列管理器名称。但我无法弄清楚在哪里添加这些信息以及如何添加?我尝试在 JMS 代理服务级别参数上添加它,但它不起作用。因此,任何见解都会有所帮助。

【问题讨论】:

  • 重要的文件是你的axis2.xml文件。编辑您的问题并添加它。
  • @Roger 我已经用axis2配置更新了这个问题。
  • 你有一个位于“java.naming.provider.url”指向的“.bindings”文件吗?那个值不应该是“file:/C:/jndidirectory”吗?你在 MQ JNDI 文件中放了什么?显示你的命令。此外,在您的用户名中有一个空白可能是错误的。
  • @Roger 是的,我在给定位置有绑定文件。我也更新了文件位置。我写它是因为它在 wso2 文档中被提及。但它也不起作用。用户名也更新了,但也没有解决问题。在哪里可以找到 MQ JNDI 文件。
  • “.bindings”是 MQ JNDI 文件。您需要显示用于在 MQ JNDI 文件中创建 QCF 和 Q 条目的命令。

标签: wso2 jms websphere wso2esb ibm-mq


【解决方案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)

IT 为我工作并解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多