Spring JMS MQJE001: Abschluss-Code '2', Reason '2042'
Mein setup ist Frühling 3 JMS, MVC + Websphere MQ + Websphere 7
<!-- this is the Message Driven POJO (MDP) -->
<bean id="messageListener" class="com.SomeListener" />
<!-- and this is the message listener container -->
<bean id="jmsContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="connectionFactory" ref="xxxCF" />
<property name="destination" ref="someQueue" />
<property name="messageListener" ref="messageListener" />
</bean>
Wenn ich starten Sie den server, der Hörer scheint richtig gestartet, da erhält er die Nachrichten in der Warteschlange, wie ich Sie stellen.
Aber, sobald ich laufen jeder einfache controller/action ist das gar nicht zu tun haben mit JMS-es gibt mir die Nachricht unten über und über...
DefaultMessag W org.springframework.jms.listener.DefaultMessageListenerContainer handleListenerSetupFailure Setup of JMS message listener invoker failed for destination 'queue:///ABCDEF.EFF.OUT?persistence=-1' - trying to recover. Cause: MQJMS2008: failed to open MQ queue ''.; nested exception is com.ibm.mq.MQException: MQJE001: Completion Code '2', Reason '2042'.
DefaultMessag I org.springframework.jms.listener.DefaultMessageListenerContainer refreshConnectionUntilSuccessful Successfully refreshed JMS Connection
ConnectionEve W J2CA0206W: A connection error occurred. To help determine the problem, enable the Diagnose Connection Usage option on the Connection Factory or Data Source.
ConnectionEve A J2CA0056I: The Connection Manager received a fatal connection error from the Resource Adapter for resource JMS$XXXQCF$JMSManagedConnection@2. The exception is: javax.jms.JMSException: MQJMS2008: failed to open MQ queue ''.
ConnectionEve W J2CA0206W: A connection error occurred. To help determine the problem, enable the Diagnose Connection Usage option on the Connection Factory or Data Source.
ConnectionEve A J2CA0056I: The Connection Manager received a fatal connection error from the Resource Adapter for resource jms/XXXQCF. The exception is: javax.jms.JMSException: MQJMS2008: failed to open MQ queue ''.
Den ursprünglichen listener scheint noch korrekt läuft...aber ich denke, der controller ist irgendwie Ansteuerung aus einem anderen Zusammenhang?
Weiß jemand, was sollte ich überprüfen oder was könnte dieses Problem verursachen?
Dank
- Wenn ich beginne, websphere, wird der listener und alles funktioniert einwandfrei. Einmal traf ich eine Aktion wie @RequestMapping("/doSomething") public String doSomethingHandler() throws Exception {..........es beginnt mit der wiederholten Fehler 2042
- Ich denke, die wichtigste Frage ist, warum schlagen ein spring-controller machen die Zuhörer versuchen, die Schaffung einen anderen Anschluss??
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den 2042 bedeutet "Objekt" in Verwendung". Da gibt es kein Konzept der ausschließlichen Nutzung von Warteschlangen zur message-Produzenten, dann einer Ihrer Verbraucher ist das sperren der Warteschlange.
Dieses Verhalten wird gesteuert durch die der queue-definition das Attribut DEFSOPT. Dies ist bei der queue-manager selbst und nicht in das verwaltete Objekt-Definitionen oder Ihrer Fabrik-Optionen. Von der Befehl Linie, während angemeldet als mqm (oder die Plattform entspricht, wenn der QMgr ist auf Windows -, iSeries, z/OS, etc.) Sie würde anfangen müssen runmqsc und geben Sie die folgenden Befehle, um zu überprüfen und beheben Sie das problem. In meinem Beispiel, der QMgr ist PLUTO und der Beispiel-queue-SYSTEM.STANDARD.LOCAL.QUEUE.
Wenn Sie die Anzeige der Warteschlange und feststellen, dass es bereits für DEFSOPT(SHARED), dann muss etwas angeben werden die ausschließliche Verwendung der queue, über die API. Das bedeutet in der Regel eine C-oder Java-Basis Programmieren, da diese nicht-JMS-APIs Zugriff auf low-level-ein Fehler in WMQ-Funktionalität. Diese können sein ein wenig schwieriger zu diagnostizieren und ich in der Regel verwenden Sie eine trace oder SupportPac MA0W exit, um die Anzeige der API-Aufrufe und Optionen verwendet. Wenn dies der Fall ist, möchte ich mehr darüber wissen, was gemeint ist, durch "einfache controller/action", wie schon in der original-post.
Schließlich, wenn die Warteschlange, die Sie Zugriff auf eine remote-queue, dann wird es lösen, eine sende-Warteschlange. Der Kanal wird immer eine sende-Warteschlange zu BEKOMMEN(GEHEMMT) und eine exklusive Sperre auf es. Dies ist konsistent mit der ein Fehler in WMQ-Funktionalität, die eine Anwendung nur Nachrichten von einem lokalen queue.