Die Verbindung zu IBM MQ aus der Java-client fehlschlägt, mit MQJE001: Abschluss-Code '2', Reason '2035'
Ich habe einen IBM MQ version 7.5 installation in windows 7. Habe ich einen queue-manager, channel-und den listener mithilfe der folgenden Befehle.
//CREATE THE QUEUE MANAGER
crtmqm.exe PG3RT1
//START THE QUEUE MANAGER AS INTERACTIVE
strmqm.exe -si PG3RT1
//CONNECT AS SCRIPT CONSOLE
runmqsc.exe PG3RT1
//CREATE THE CHANNEL TO APPLICATION CONNECTIVITY
DEFINE CHANNEL(PG3RT1.CHANNEL) CHLTYPE(SVRCONN) TRPTYPE(TCP)
//CREATE THE LISTENER
DEFINE LISTENER(LISTENER.PG3RT1) TRPTYPE(TCP) PORT(1414)
//START THE LISTENER
START LISTENER(LISTENER.PG3RT1)
Jetzt versuche ich, die Verbindung zum Queue-Manager mit dem folgenden java-client.
Verbindung wird zurückgewiesen mit der folgenden Fehlermeldung.
15:06:52.175 [localhost-startStop-1] ERROR c.b.c.s.s.m.MQUtil - MQJE001: Completion Code '2', Reason '2035'.
com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2035'.
at com.ibm.mq.MQManagedConnectionJ11.<init>(MQManagedConnectionJ11.java:230)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11._createManagedConnection(MQClientManagedConnectionFactoryJ11.java:553)
at com.ibm.mq.MQClientManagedConnectionFactoryJ11.createManagedConnection(MQClientManagedConnectionFactoryJ11.java:593)
at com.ibm.mq.StoredManagedConnection.<init>(StoredManagedConnection.java:96)
at com.ibm.mq.MQSimpleConnectionManager.allocateConnection(MQSimpleConnectionManager.java:198)
at com.ibm.mq.MQQueueManagerFactory.obtainBaseMQQueueManager(MQQueueManagerFactory.java:893)
at com.ibm.mq.MQQueueManagerFactory.procure(MQQueueManagerFactory.java:780)
at com.ibm.mq.MQQueueManagerFactory.constructQueueManager(MQQueueManagerFactory.java:729)
at com.ibm.mq.MQQueueManagerFactory.createQueueManager(MQQueueManagerFactory.java:177)
at com.ibm.mq.MQQueueManager.<init>(MQQueueManager.java:745)
at com.bcs.cas.sach.simulator.mq.MQUtil.init(MQUtil.java:52)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
Kann jemand beraten, warum die Verbindung fehlschlägt.
Brauche ich zum aktivieren der remote-administration der queue-manager?
Folgende code-fragement ich für die Verbindung verwendet
public void init(){
MQEnvironment.hostname = hostName;
MQEnvironment.port = Integer.valueOf(port);
MQEnvironment.channel = serverChannelName;
MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES);
LOGGER.info("queueManagerName: " + queueManagerName);
LOGGER.info("hostName: " + hostName);
LOGGER.info("serverChannelName: " + serverChannelName);
LOGGER.info("port: " + port);
//initialize the connection pool
MQPoolToken token = MQEnvironment.addConnectionPoolToken();
try {
mqQueueManager = new MQQueueManager(queueManagerName, MQEnvironment.properties);
LOGGER.info("mqQueueManager: " + mqQueueManager);
} catch (MQException e) {
LOGGER.error(e.getMessage(), e);
}
}
- Die details der Fehler sollte in der MQ-Fehler-log. Können Sie das auch?
- Grund-codes (v8.0): ibm.com/support/knowledgecenter/SSFKSJ_8.0.0/com.ibm.mq.tro.doc/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
MQRC 2035 ist MQRC_NOT_AUTHORIZED. Der Grund dafür war, zurückgegeben werden können, finden sich in der AMQERR melden Sie sich auf der queue-manager.
Als CHLAUTH wurde noch nicht konfiguriert und ist standardmäßig aktiviert, ich erwarte von Ihnen sind nicht in der Lage, zu verbinden, wie Sie übergeben nicht die CHLAUTH Regeln.
Ist es sehr wahrscheinlich, dass dies eine Berechtigungs-Problem. Die einfachste ist der Blick auf den return-code und interpretieren
mqrc 2035 returns MQRC_NOT_AUTHORIZED
Einer der Gründe dafür könnte sein, Berechtigungen. Dieses Problem kann behoben werden, entweder durch Einstellung der richtigen privilges auf den QueueManager (setmqaut) , dann auf den channel, in dem Benutzer ermöglichen, mit dem Sie eine Verbindung herstellen, um MQ zu genehmigen, wie Sie erklärt hier . Diesen Post können Sie den code verwenden, um eine Verbindung durch das hinzufügen von Benutzer-id MQEnvironment und gehen
Können Sie auch beziehen sich diese technote für Informationen.