在spring JMS项目中,我尝试连接到放置在spring客户机所在位置的IBM MQ队列。当应用程序试图连接到MQ服务器时,我得到以下错误:
INFO - Could not refresh JMS Connection for destination 'TI.UNIT1.TRAN.IN' - retrying in 5000 ms. Cause: JMSWMQ2013: L'authentification de la sécurité fournie pour le gestionnaire de files d'attente 'QM_TEST' à l'aide du mode de connexion 'Client' et du nom d'hôte 'localhost' n'était pas valide.; nested exception is com.ibm.mq.MQException: JMSCMQ0001: L'appel WebSphere MQ a échoué avec le code achèvement '2' ('MQCC_FAILED') ; motif '2035' ('MQRC_NOT_AUTHORIZED').
com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: L'authentification de la sécurité fournie pour le gestionnaire de files d'attente 'QM_TEST' à l'aide du mode de connexion 'Client' et du nom d'hôte 'localhost' n'était pas valide. Vérifiez si le nom dutilisateur et le mot de passe fournis sont corrects dans le gestionnaire de files dattente auquel vous vous connectez
at com.ibm.msg.client.wmq.common.internal.Reason.reasonToException(Reason.java:531)
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:219)
at com.ibm.msg.client.wmq.internal.WMQConnection.<init>(WMQConnection.java:410)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createV7ProviderConnection(WMQConnectionFactory.java:7855)
at com.ibm.msg.client.wmq.factories.WMQConnectionFactory.createProviderConnection(WMQConnectionFactory.java:7441)
at com.ibm.msg.client.jms.admin.JmsConnectionFactoryImpl.createConnection(JmsConnectionFactoryImpl.java:276)
at com.ibm.mq.jms.MQConnectionFactory.createCommonConnection(MQConnectionFactory.java:6055)
at com.ibm.mq.jms.MQQueueConnectionFactory.createQueueConnection(MQQueueConnectionFactory.java:115)
at org.springframework.jms.listener.DefaultMessageListenerContainer102.createConnection(DefaultMessageListenerContainer102.java:71)
at org.springframework.jms.listener.AbstractJmsListeningContainer.createSharedConnection(AbstractJmsListeningContainer.java:378)
at org.springframework.jms.listener.AbstractJmsListeningContainer.refreshSharedConnection(AbstractJmsListeningContainer.java:363)
at org.springframework.jms.listener.DefaultMessageListenerContainer.refreshConnectionUntilSuccessful(DefaultMessageListenerContainer.java:785)
at org.springframework.jms.listener.DefaultMessageListenerContainer.recoverAfterListenerSetupFailure(DefaultMessageListenerContainer.java:767)
at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:898)
at java.lang.Thread.run(Thread.java:744)
Caused by: com.ibm.mq.MQException: JMSCMQ0001: L'appel WebSphere MQ a échoué avec le code achèvement '2' ('MQCC_FAILED') ; motif '2035' ('MQRC_NOT_AUTHORIZED').
at com.ibm.msg.client.wmq.common.internal.Reason.createException(Reason.java:206)
IBM MQ Server(Windows 64bits)版本=8.0.0.4
Spring JMS应用程序版本=7.0
日志文件(amqerr01.Log
)内容:
----- cmqxrsrv.c : 2321 -------------------------------------------------------
17/02/2017 01:40:20 - Process(6472.10) User(John) Program(amqzlaa0.exe)
Host(MyMachine) Installation(Installation1)
VRMF(8.0.0.4) QMgr(QM_TEST)
AMQ5540: L'application 'WebSphere MQ Client for Java' n'a pas fourni d'ID
utilisateur et de mot de passe
EXPLICATION :
Le gestionnaire de files d'attente est configuré pour nécessiter un ID
utilisateur et un mot de passe, mais ni l'un ni l'autre n'a été fourni.
ACTION :
Assurez-vous que l'application fournit un ID utilisateur et un mot de passe
valides ou spécifiez FACULTATIF pour la configuration du gestionnaire de files
d'attente afin de permettre aux applications n'ayant pas fourni d'ID
utilisateur et de mot de passe de se connecter.
----- amqzfuca.c : 4287 -------------------------------------------------------
17/02/2017 01:40:20 - Process(6472.10) User(John) Program(amqzlaa0.exe)
Host(MyMachine) Installation(Installation1)
VRMF(8.0.0.4) QMgr(QM_TEST)
AMQ5541: L'échec de la vérification de l'authentification a été provoqué par la
configuration CONNAUTH CHCKCLNT(REQDADM) du gestionnaire de files d'attente.
EXPLICATION :
L'ID utilisateur 'john' et son mot de passe ont été vérifiés car l'ID
utilisateur est privilégié et la configuration de l'autorité de connexion du
gestionnaire de files d'attente (CONNAUTH) fait référence à un objet
d'informations d'authentification (AUTHINFO) nommé
'SYSTEM.DEFAULT.AUTHINFO.IDPWOS' avec CHCKCLNT(REQDADM).
Ce message accompagne une erreur précédente pour expliquer la raison de la
vérification de l'ID utilisateur et du mot de passe.
ACTION :
Pour plus d'informations, reportez-vous à l'erreur précédente.
Vérifiez que l'application client spécifie un mot de passe et que le mot de
passe est correct pour l'ID utilisateur. La configuration de l'authentification
de la connexion du gestionnaire de files d'attente détermine le référentiel
d'ID utilisateur. Par exemple, la base de données utilisateur du système
d'exploitation local ou un serveur LDAP.
Pour éviter la vérification de l'authentification, vous pouvez utiliser un ID
utilisateur non privilégié ou changer la configuration d'authentification du
gestionnaire de files d'attente. Vous pouvez modifier l'attribut CHCKCLNT dans
l'enregistrement CHLAUTH, mais vous devez éviter d'autoriser l'accès distant
non authentifié.
-------------------------------------------------------------------------------
17/02/2017 01:40:21 - Process(11528.7) User(John) Program(amqrmppa.exe)
Host(MyMachine) Installation(Installation1)
VRMF(8.0.0.4) QMgr(QM_TEST)
AMQ9557: Echec de l'initialisation de l'ID utilisateur du gestionnaire de files
d'attente pour 'John'.
EXPLICATION :
L'appel d'initialisation de l'ID utilisateur 'John' a échoué avec le code
achèvement 2 et le code anomalie 2035.
ACTION :
Corrigez l'erreur et relancez l'opération.
----- cmqxrsrv.c : 2321 -------------------------------------------------------
17/02/2017 01:40:21 - Process(11528.7) User(John) Program(amqrmppa.exe)
Host(MyMachine) Installation(Installation1)
VRMF(8.0.0.4) QMgr(QM_TEST)
AMQ9206: Erreur lors de l'envoi de données à l'hôte MyMachine (127.0.0.1).
EXPLICATION :
Une erreur s'est produite lors de l'envoi de données à 'MyMachine (127.0.0.1)'
via TCP/IP. Un incident de communications en est peut-être la cause.
ACTION :
Le code retour provenant de l'appel TCP/IP(send) était 10054 X('2746'). Notez
ces valeurs et informez-en votre administrateur système.
----- amqccita.c : 3169 -------------------------------------------------------
17/02/2017 01:40:21 - Process(11528.7) User(John) Program(amqrmppa.exe)
Host(MyMachine) Installation(Installation1)
VRMF(8.0.0.4) QMgr(QM_TEST)
AMQ9999: Le canal 'SYSTEM.ADMIN.SVRCONN' vers l'hôte '127.0.0.1' s'est terminé
anormalement.
EXPLICATION :
Le programme du canl s'exécutant sous l'ID processus 11528(876) pour le canal
'SYSTEM.ADMIN.SVRCONN' a pris fin anormalement. Le canal est '127.0.0.1'. Dans
certains cas, son nom ne peut pas être déterminé et il est représenté par
'????'.
ACTION :
Examinez les messages d'erreur précédents du programme de canal dans les
journaux des erreurs afin de déterminer la cause de l'incident. Notez que ce
message peut être totalement exclus ou supprimé en réglant les attributs
"ExcludeMessage" ou "SuppressMessage" sous la strophe "QMErrorLog" dans le
fichier qm.ini. D'autres informations figurent dans le guide d'administration
du système.
----- amqrmrsa.c : 930 --------------------------------------------------------
在MQ V8.0中,IBM引入了Connauth
,它默认指向authinfo
对象system.default.authinfo.idpwos
。默认情况下,此对象的chckclnt
属性设置为reqdadm
。reqdadm
意味着任何连接到具有MQ管理权限的svrconn
通道的用户都必须提供有效的密码。例如,这将是mqm组中的用户。
下面是您在amqerr01.log
中收到的错误的英文格式:
AMQ5541: The failed authentication check was caused by the queue manager
CONNAUTH CHCKCLNT(REQDADM) configuration.
EXPLANATION: The user ID 'john' and its password were checked because the
user ID is privileged and the queue manager connection authority (CONNAUTH)
configuration refers to an authentication information (AUTHINFO) object
named 'SYSTEM.DEFAULT.AUTHINFO.IDPWOS' with CHCKCLNT(REQDADM). This message
accompanies a previous error to clarify the reason for the user ID and
password check.
使用spring配置,您应该能够将用户名和密码传递给MQ进行身份验证。默认情况下,system.default.authinfo.idpwos
对象将被设置为根据操作系统检查密码。
MQ V7.0 JMS jar文件可以发送用户名和密码,但每个限制为12个字符,密码也可以通过客户端和队列管理器之间的网络发送。MQ V8.0和更高版本可以发送超过12个字符的用户名和密码,如果关闭MQ兼容模式,还可以利用密码保护,在通过网络发送时使用3DES加密密码。还请注意,自2015年9月30日以来,MQ V7.0就不再支持IBM了。
@MoragHughson写了一篇很好的IBM developerWorks MQdev博客,标题是“在不关闭MQ安全性的情况下继续运行”,解释了如何启用这种安全性,这将是一个很好的起点。我建议,如果您有关于CONNAUTH、OAM或Spring配置的任何进一步的具体问题要发送用户名和密码,您可以发布额外的具体问题,并用[ibm-mq]以及任何其他合适的标记(如[Spring]等)标记它们。
MQ团队告诉我,日志包含如下内容:- ...它失败了,因为它使用了错误的凭据来连接。 当我传入一个不同的凭据(用户ID:ABC123)时,MQ日志会看到我用来登录机器的用户ID(用户ID:XYZ)。 如果我将设置为,那么现在我将得到不同的错误消息:- 好消息是它看到了正确的用户ID(ABC123),但我被告知密码无效。我不认为这是密码问题,因为我能够使用相同的凭据访问其他受保护的web服务。
有人能帮助我在哪里检查MAXHANDS计数吗(我假设它是在MQ端配置的),以及有什么方法可以检查问题被复制的计数数吗? 注意:我使用的是IBMMQ,所有队列基础结构都由MQ团队管理。 错误详细信息: 非常感谢立即的帮助。
我有问题连接到一个QMGR。由于端口1414上ssl通道的cipherspec错误,主机拒绝了连接。密钥库签出正常。我能够使用openssh连接到主机并检索其密钥。 我已尝试启用和禁用SSLv3。我提供了带和不带“”(双引号)的密钥库密码。这些是连接属性
我使用的是websphere v7.0和websphere mq 6。在尝试通过websphere控制台连接到队列管理器时,我收到compcode“2”('MQCC_FAILED')原因“2058”错误。具有相同的队列管理器在定义了服务器通道的mq服务器上可用。 任何帮助非常感谢。