簡體   English   中英

Spring jms 到 Websphere MQ 連接錯誤

[英]Spring jms to Websphere MQ connection error

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>set MQSERVER=CH.ABC_DEV/TCP/abchost.com(1414)

C:\Users\me>set MQSAMP_USER_ID=someuser

C:\Users\me>c:\IBM\MQ\Tools\c\Samples\Bin\amqsbcgc.exe abc.queue.abc ABC_DEV

Enter password: p@ssword



--connected!

但是為什么在通過 WAS 連接時同一個用戶不能工作?

盡管我提供了正確的憑據,但我的應用程序也無法連接到 MQ。 啟用身份驗證兼容模式解決了該問題。

另請參閱: IBM MQ 連接身份驗證

如果您使用的是mq-jms-spring-boot-starter,您可以在 application.properties 中添加: ibm.mq.userAuthenticationMQCP=false

在內部,這會將其應用於連接工廠: cf.setBooleanProperty(WMQConstants.USER_AUTHENTICATION_MQCSP, false);

正如底部的消息清楚地表明,連接嘗試被拒絕,原因代碼為 2035,未授權。 出於特定原因,您的 MQ 管理員必須檢查隊列管理器端的 MQ 錯誤日志。 設置連接認證和授權的方式有多種,需要查閱MQ文檔 此外,在設置連接授權后,應用程序可能會在打開隊列時失敗並顯示 2035,因此請繼續閱讀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM