AppConfig.xml设置:
<bean id="connectionFactory" class="com.ibm.mq.jms.MQQueueConnectionFactory">
<property name="hostName" value="abchost.com />
<property name="port" value="1414" />
<property name="queueManager" value="ABC_DEV" />
<property name="transportType" value="1" />
<jms:listener-container acknowledge="transacted">
<jms:listener destination="abc.queue.abc"
ref="someComplexServiceImpl"
method="doSomething" />
</jms:listener-container>
<bean id="jmsTemplate" class="org.springframework.jms.core.JmsTemplate">
<property name="connectionFactory" ref="connectionFactory" />
<property name="defaultDestinationName" value="abc.queue.abc"/>
</bean>
我收到以下错误:
Caused by: com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED').
[9/26/16 13:13:35:758 CST] 000000aa SystemErr R at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:204)
[9/26/16 13:13:35:758 CST] 000000aa SystemErr R ... 98 more
Cause: JMSWMQ2013: The security authentication was not valid that was supplied for QueueManager 'ABC_DEV' with connection mode 'Client' and host name 'abchost.com(1414)'.; nested exception is com.ibm.mq.MQException: JMSCMQ0001: WebSphere MQ call failed with compcode '2' ('MQCC_FAILED') reason '2035' ('MQRC_NOT_AUTHORIZED')
我想知道的是,在我们需要配置的Websphere MQ中的代码或某些设置中是否存在问题?在将问题提交给我们的Websphere MQ管理员之前,我想确保这不是程序中的错误(顺便提一下,他是Websphere MQ的新手)
我们正在使用: Websphere MQ版本9 Spring JMS版本4.2.4.RELEASE
我使用MQ Client连接到MQ,我能够连接(通过命令行):
C:\ Users \ me&gt;设置MQSERVER = CH.ABC_DEV / TCP / abchost.com(1414)
C:\ Users \ me&gt;设置MQSAMP_USER_ID = someuser
C:\ Users \ me&gt; c:\ IBM \ MQ \ Tools \ c \ Samples \ Bin \ amqsbcgc.exe abc.queue.abc ABC_DEV
输入密码:p @ ssword
! - 连接
但为什么在通过WAS连接时,同一个用户无法工作?
答案 0 :(得分:1)
尽管我提供了正确的凭据,但我的应用程序也无法连接到MQ。启用身份验证兼容模式可以解决此问题。
另请参阅:IBM MQ Connection authentication
如果您使用的是mq-jms-spring-boot-starter,则可以在application.properties中添加它:
ibm.mq.userAuthenticationMQCP=false
内部,这会将其应用于连接工厂:
cf.setBooleanProperty(WMQConstants.USER_AUTHENTICATION_MQCSP, false);
答案 1 :(得分:0)
正如底部的消息清楚地说明,连接尝试被拒绝,原因代码为2035,未经授权。由于特定原因,MQ管理员必须检查队列管理器端的MQ错误日志。设置连接身份验证和授权的方法有多种,您需要咨询MQ documentation。此外,很可能在设置连接授权后,应用程序在打开队列时将失败,因此请继续阅读。