Tipps zur Fehlerbehebung beim Messaging
Die folgenden Tipps sollen Sie bei der Behebung von Fehlern in der WebSphere-Messaging-Konfiguration unterstützen.
Verwenden Sie für die Bestimmung und
Behebung von Fehlern beim Messaging die Trace- und Protokollfunktionen von
WebSphere Application Server.
Für das Bestimmen und Beheben von Problemen beim Messaging können Sie die Trace- und Protokollfunktionen von WebSphere Application Server gemäß der Beschreibung im Artikel Komponententrace konfigurieren (CTRACE) verwenden.
Wenn Sie IBM MQ-Fehlernachrichten oder -Ursachencodes in Nachrichten und Protokollen von WebSphere Application Server sehen, ziehen Sie den Abschnitt zu den Nachrichten im Information Center von IBM MQ zu Rate.
Prüfen Sie, ob der Fehler aufgezeichnet und dokumentiert wurde. Verwenden Sie dazu die Links im Abschnitt Fehlerdiagnose und -behebung: Lernmaterial.
- Konfiguration des WebSphere MQ-Ressourcenadapters wird nicht automatisch aktualisiert und erfordert eine manuelle Anpassung
- Bei Installation eines Fixpacks treten Ausnahmen der Art "java.lang.ClassNotFoundException" auf
- Nachrichten von WebSphere MQ for z/OS werden von JMS-Anwendungen nicht konsumiert
- Eine JMS-Anwendung kann keine Nachrichten mehr senden oder empfangen
- Fehler beim Starten des MDB-Listener
- Fehler beim Ausführen von JMS-Anwendungen mit aktivierter Sicherheit
Der Anwendungsserver wird nicht gestartet, wenn die Ländereinstellung "zh_TW.EUC" unter Solaris eingestellt ist
- Ausnahme java.lang.OutOfMemoryError bei der Verarbeitung von JMS-Nachrichten
- Fehler "TopicConnectionFactory attributes clash"
- Ausnahme "WSEC5061E: Der SOAP-Body ist nicht signiert"
- Bei Verwendung von IBM MQ als externen JMS-Provider treten Fehler auf
Fehler "javax.jms.JMSException: MQJMS3024: unable to start MDB listener"
Während des Serverstarts werden Nachrichten des Channel Framework des WebSphere MQ-Messaging-Providers angezeigt
Konfiguration des WebSphere MQ-Ressourcenadapters wird nicht automatisch aktualisiert und erfordert eine manuelle Anpassung
Normalerweise wird der IBM MQ-Ressourcenadapter durch die Anwendung von Fixpacks von WebSphere Application Server automatisch aktualisiert. Wenn Sie den IBM MQ-Ressourcenadapter auf einigen Knoten in Ihrer Umgebung manuell aktualisiert haben, wird der Ressourcenadapter, der von Servern auf diesen Knoten verwendet wird, durch das Anwenden eines Fixpacks nicht automatisch aktualisiert.
Informationen zur Behebung dieses Problems finden Sie im Artikel IBM MQ-Ressourcenadapter verwalten.
Bei Installation eines Fixpacks treten Ausnahmen der Art "java.lang.ClassNotFoundException" auf
J2CA0043E: Beim Instanziieren einer ResourceAdapter-JavaBean-Instanz für
den installierten Ressourcenadapter mit dem Schlüssel #removed# ist eine Ausnahme eingetreten.
Nachrichten von WebSphere MQ for z/OS werden von JMS-Anwendungen nicht konsumiert
Nachrichten von WebSphere MQ for z/OS werden von den JMS-Anwendungen, die in WebSphere Application Server implementiert sind und Verbindungsfactorys oder Aktivierungsspezifikationen verwenden, nicht konsumiert
- Aktivierungsspezifikation für den IBM MQ-Messaging-Provider konfigurieren.
- Eine einheitliche Verbindungsfactory für den IBM MQ-Messaging-Provider konfigurieren.
- Eine Warteschlangenverbindungsfactory für den IBM MQ-Messaging-Provider konfigurieren.
- Eine Topicverbindungsfactory für den IBM MQ-Messaging-Provider konfigurieren.
Eine JMS-Anwendung kann keine Nachrichten mehr senden oder empfangen
- Einer oder mehreren Message-Beans, die über JMS-Aktivierungsspezifikationen (Java™ Message Service) miteinander verbunden sind.
- Einer oder mehreren Enterprise-Beans, die über JMS-Verbindungsfactorys und JMS-Ziele miteinander verbunden sind.
- Verwenden Sie die folgende Anzeige, wenn Sie eine zugehörige Sicht der JMS-Ressourcen für eine bestimmte Anwendung anzeigen möchten: Messaging-Ressourcen für diese Anwendung.
- In der folgenden Anzeige können Sie die Anwendungen und JMS-Ressourcen für ein bestimmtes Ziel des Standard-Messaging-Providers anzeigen: Anwendungsressourcen für dieses Ziel.
Fehler beim Starten des MDB-Listener
WMSG0019E: Der MDB-Listener {0} für das JMS-Ziel {1} kann nicht gestartet werden: {2}
- Vergewissern Sie sich, dass die Verwaltungsressourcen ordnungsgemäß konfiguriert wurden. Verwenden Sie beispielsweise die Administrationskonsole, um die Eigenschaften des Listener-Ports zu überprüfen: JNDI-Name der Zieladresse und JNDI-Name der Verbindungsfactory. Überprüfen Sie, ob die anderen Eigenschaften des Listener-Ports, der Zieladresse und der Verbindungsfactory korrekt sind.
- Vergewissern Sie sich, dass die Warteschlange vorhanden ist und dem JMS-Server hinzugefügt wurde.
- Vergewissern Sie sich, dass der Warteschlangenmanager und der JMS-Server gestartet wurden.
- Vergewissern Sie sich, dass der ferne Warteschlangenmanager-Listener gestartet wurde.
Falls die Sicherheit aktiviert ist, vergewissern Sie sich, dass ein Aliasname für die komponentengesteuerte Authentifizierung in der von der MDB verwendeten Verbindungsfactory für Warteschlangen oder Verbindungsfactory für Topics angegeben wurde.
Wenn die Sicherheit aktiviert ist, vergewissern Sie sich, dass die Benutzer-ID, mit der der MDB-Listener gestartet wurde, die erforderlichen Berechtigungen besitzt. Weitere Informationen finden Sie im Artikel Fehler beim Ausführen von JMS-Anwendungen mit aktivierter Sicherheit.
Fehler beim Ausführen von JMS-Anwendungen mit aktivierter Sicherheit
WMSG0019E: Der MDB-Listener PSSampleMDB für das JMS-Ziel Sample/JMS/listen kann nicht gestartet werden:
javax.jms.JMSSecurityException:
Dieses Beispiel zeigt an, dass die übergebenen Sicherheitsberechtigungsnachweise nicht gültig sind. - Wenn das Authentifizierungsverfahren auf Anwendung gesetzt wird, muss die Anwendung gültige Berechtigungsnachweise bereitstellen.
- Ist das Authentifizierungsverfahren auf Container
eingestellt, müssen Sie die JMS-Verbindungsfactory mit einem containergesteuerten Aliasnamen konfigurieren und sicherstellen, dass der zugeordnete Benutzername und das zugeordnete Kennwort gültig sind.
Wenn Sie im Transportmodus Bindungen arbeiten, können Sie alternativ die Unterstützung für Connector-Thread-IDs nutzen.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
MQJMS2013 invalid security authentication supplied for MQQueueManager:
Wenn Sie
IBM MQ
als JMS-Provider mit einer JMS-Verbindung im Transportmodus "Bindungen" verwenden und der angegebene Benutzer nicht der
derzeit angemeldete Benutzer für den Prozess von WebSphere Application Server ist, wird bei der Authentifizierung der JMS-Bindungen durch IBM MQ ein Fehler wegen ungültiger Sicherheitsauthentifizierung generiert.- Sicherheitsberechtigungsnachweise verwenden. Zur Verwendung von Sicherheitsberechtigungsnachweisen müssen Sie sicherstellen, dass der angegebene Benutzer der derzeit angemeldete Benutzer für den Prozess von WebSphere Application Server ist.
- Sicherheitsberechtigungsnachweise nicht verwenden. Stellen Sie sicher, dass in der Verbindungsfactory von IBM MQ die Eigenschaften Komponentengesteuerter Authentifizierungsalias und Containergesteuerter Authentifizierungsalias nicht gesetzt sind.
Weitere Informationen zur Messaging-Sicherheit finden Sie im Artikel Messaging sichern.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
Der Anwendungsserver wird nicht gestartet, wenn die Ländereinstellung "zh_TW.EUC" unter Solaris eingestellt ist
Wenn Sie unter Solaris die Ländereinstellung auf "zh_TW.EUC" setzen und IBM MQ als JMS-Provider verwenden, werden die Anwendungsserver möglicherweise nicht gestartet.
Sie können dieses Problem beheben, indem Sie die Variablen LANG und LC_ALL auf "zh_TW" setzen.
Ausnahme java.lang.OutOfMemoryError bei der Verarbeitung von JMS-Nachrichten
Wenn Sie den Standard-Messaging-Provider verwenden, werden JMS-Nachrichten von einer Messaging-Engine im Anwendungsserverprozess verarbeitet. Bei dieser Methode wird Speicher aus dem JVM-Heapspeicher des Anwendungsservers konsumiert. Wenn sehr viele große Nachrichten gleichzeitig verarbeitet werden und der verfügbare JVM-Heapspeicher für dieses Ereignis nicht ausreicht, wird eine Ausnahme vom Typ "java.lang.OutOfMemoryError" ausgelöst, und der Anwendungsserver wird beendet.
- Wenn Sie beispielsweise eine MDB implementieren, die Nachrichten parallel verarbeiten soll, müssen Sie den potenziellen Speicherbedarf des Anwendungsservers für die parallelen Endpunkte einkalkulieren. Für jeden Endpunkt, der Nachrichtenanforderungen parallel bearbeitet, muss mindestens das Doppelte der Nachrichtengröße für den JVM-Heapspeicher des Servers gerechnet werden. Diese Plangröße kann sich noch weiter erhöhen, insbesondere wenn zweiphasige Transaktionen involviert sind.
- Starten Sie die Administrationskonsole von WebSphere Application Server.
- Navigieren Sie zu Anfangsgröße des Heapspeichers und Maximale Größe des Heapspeichers. , und konfigurieren Sie anschließend den verfügbaren JVM-Heapspeicher des Anwendungsservers über die Eigenschaften
- Klicken Sie auf Maximale Anzahl paralleler Endpunkte der Aktivierungsspezifikation für diese MDB. , und konfigurieren Sie anschließend die Anzahl paralleler MDB-Endpunkte, die Nachrichten verarbeiten können, über die Eigenschaft
Fehler "TopicConnectionFactory attributes clash"
WSVR0017E: Beim Binden der J2EE-Ressource TopicConnectionFactory als <JNDI_NAME>
von file:<RESOURCES_FILE> ist ein Fehler aufgetreten: com.ibm.ws.runtime.component.binder.ResourceBindingException: invalid
configuration passed to resource binding logic. REASON: Failed to create connection factory:
Error raised constructing AdminObject, error code: TopicConnectionFactory attributes clash :
TopicConnectionFactory attributes clash
Dieser Fehler wird durch die Konfiguration der Verbindungsfactory für JMS-Topics verursacht, die für das Erstellen des Subskribenten verwendet wird. In der Konfiguration ist für die Brokerversion "Basis" und für die Nachrichtenauswahl "Broker" angegeben. Der Broker des IBM MQ-"Basisprodukts" (MA0C SupportPac Broker) unterstützt keine Nachrichtenauswahl durch den "Broker".
Zur Behebung dieses Problems ändern Sie die Verbindungsfactory für JMS-Topics, und geben Sie für die Nachrichtenauswahl den Wert "Client" an. Dies ist die einzige Einstellung, die vom IBM MQ-Basis-Broker (MA0C SupportPac Broker) unterstützt wird.
Ausnahme "WSEC5061E: Der SOAP-Body ist nicht signiert"
com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5061E: Der SOAP-Body ist nicht signiert.; null
- Eine mit WS-Security konfigurierte Web-Service-Anwendung wird in einem Anwendungsserver ausgeführt, in dem die Sicherheit von WebSphere Application Server aktiviert ist.
- Diese Web-Service-Anwendung verwendet den JMS-Transport, um SOAP-Anforderungen an einen Ziel-Web-Service zu senden.
- Die JMS-Ressource verwendet einen fernen IBM MQ-Server, um die Verbindung zu einer IBM MQ-Warteschlange herzustellen.
- Eine andere identische Web-Service-Anwendung, die dieselbe Warteschlange über denselben IBM MQ-Server verwendet, wird in einem anderen Anwendungsserver ausgeführt, in dem die Sicherheit von WebSphere Application Server nicht aktiviert ist.
Das Problem tritt auf, wenn eine von der Ursprungsanwendung gesendete Anforderung über dieselbe Warteschlange verarbeitet wird, aber an den anderen Anwendungsserver gesendet wird, in dem die Sicherheit nicht aktiviert ist.
- Erstellen Sie einen eindeutigen Warteschlangenmanager mit einem eindeutigen Port im IBM MQ-Server.
- Rekonfigurieren Sie die JMS-Ressourcen so, dass der neue Warteschlangenmanager und der neue Port verwendet werden. Ändern Sie beispielsweise in der Administrationskonsole von WebSphere Application Server die Eigenschaften der IBM MQ-Warteschlangenverbindungsfactory gemäß der Beschreibung im Artikel Eine Warteschlangenverbindungsfactory für den IBM MQ-Messaging-Provider konfigurieren.
- Führen Sie die Anwendung erneut aus.
Bei Verwendung von IBM MQ als externen JMS-Provider treten Fehler auf
Wenn Sie IBM MQ als externen JMS-Provider verwenden und eine Nachricht in einer benutzerverwalteten Transaktion an eine IBM MQ-Warteschlange senden, kann die Nachricht in der Zielwarteschlange ankommen, bevor die Transaktion festgeschrieben ist. Dieses Problem tritt auf, wenn der IBM MQ-Ressourcenmanager nicht in der benutzerverwalteten Transaktion registriert ist.
Zur Behebung dieses Problems verwenden Sie eine containergesteuerte Transaktion.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
![[IBM i]](../images/iseries.gif)
Fehler "javax.jms.JMSException: MQJMS3024: unable to start MDB listener"
- Setzen Sie die Client-ID mit dem Tool "jmsadmin" als Eigenschaft von tcf. Ändern Sie beispielsweise tcf(myTCF) clientid(myID).
- Setzen Sie die Client-ID über das Programm mit der Methode TopicConnection.setClientID().
- Setzen Sie die Client-ID über die Administrationskonsole (siehe den Artikel Einstellungen für die Topicverbindungsfactory des IBM MQ-Messaging-Providers).
![[z/OS]](../images/ngzos.gif)
Während des Serverstarts werden Nachrichten des Channel Framework des WebSphere MQ-Messaging-Providers angezeigt
Die folgende Nachricht kann während des Serverstarts mehrfach im CRA-Prozess (Control Region Adjunct, Zusatzregion) angezeigt werden, selbst wenn die Verbindung bei nachfolgenden Wiederholungen erfolgreich hergestellt wird. Diese Nachricht wird aufgrund des asynchronen Starts des z/OS-TCP-Proxy-Kanals ausgegeben und weist nicht auf einen Fehler hin.
Trace: 2009/06/17 08:24:41.434 01 t=9C6B58 c=UNK key=P8 (00000011)
Description: Log Java Message
Message: CHFW0030E: Error starting chain _InboundTCPProxyBridgeService because
of exception com.ibm.wsspi.channel.framework.exception.RetryableChannelException:
An exception was thrown when attempting to start the TCPProxyChannel
com.ibm.ws.channel.framework.imp l.ChannelFrameworkImpl
Diese Nachrichten werden möglicherweise
von einer FFDC-Ausgabe wie der folgenden begleitet:
Exception = com.ibm.wsspi.channel.framework.exception.RetryableChannelException
Source = com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChainInternal
probeid = 2577
Stack Dump = com.ibm.wsspi.channel.framework.exception.RetryableChannelException:
An exception was thrown when attempting to start the TCPProxyChannel
at com.ibm.ws.tcpchannelproxy.jfap.impl.TCPProxyInboundChannel.start(TCPProxyInboundChannel.java:153)
at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChannelInChain(ChannelFrameworkImpl.java:1410)
at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChainInternal(ChannelFrameworkImpl.java:2863)
at com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl.startChainInternal(WSChannelFrameworkImpl.java:960)
at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChainInternal(ChannelFrameworkImpl.java:2794)
at com.ibm.ws.channel.framework.impl.ChannelFrameworkImpl.startChain(ChannelFrameworkImpl.java:2779)
at com.ibm.ws.runtime.component.ChannelFrameworkServiceImpl.startChain(ChannelFrameworkServiceImpl.java:666)
at com.ibm.ws.sib.jfapchannel.framework.impl.ChannelFrameworkReference$TCPProxy
BridgeServiceInboundChainStartupRunnable.run(ChannelFrameworkReference.java:1641)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1550)
Caused by: com.ibm.ws.tcpchannelproxy.jfap.NotYetInitializedException: Server is not yet initialized
at com.ibm.ws.tcpchannelproxy.jfap.TCPProxyBridgeServicesImpl.startListening(TCPProxyBridgeServicesImpl.java:558)
at com.ibm.ws.tcpchannelproxy.jfap.impl.TCPProxyInboundChannel.start(TCPProxyInboundChannel.java:131)
... 8 more
Trace: 2009/06/17 08:24:51.449 01 t=9C6B58 c=UNK key=P8 (13007002)
ThreadId: 00000003
FunctionName: com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl
SourceId: com.ibm.ws.channel.framework.impl.WSChannelFrameworkImpl
Category: AUDIT
ExtendedMessage: BBOO0222I: CHFW0019I: Der Transportkanalservice hat die Kette
_InboundTCPProxyBridgeService gestartet.