Tipps zur Fehlerbehebung beim Messaging

Die folgenden Tipps sollen Sie bei der Behebung von Fehlern in der WebSphere-Messaging-Konfiguration unterstützen.

Anmerkung: Dieser Artikel referenziert eine oder mehrere Protokolldateien des Anwendungsservers. Alternativ dazu wird empfohlen, den Server so zu konfigurieren, dass er die HPEL-Protokoll- und -Traceinfrastruktur (High Performance Extensible Logging) verwendet und nicht die Dateien SystemOut.log , SystemErr.log, trace.log und activity.log auf verteilten oder IBM® i-Systemen. Sie können HPEL auch in Verbindung mit Ihren nativen z/OS-Protokolleinrichtungen verwenden. Wenn Sie HPEL verwenden, können Sie mit dem Befehlszeilentool LogViewer im Verzeichnis "bin" des Serverprofils auf alle Ihre Protokoll- und Tracedaten zugreifen. Weitere Informationen zur Verwendung von HPEL finden Sie in der Dokumentation zum Einsatz von HPEL für die Fehlerbehebung in Anwendungen.

[IBM i][AIX Solaris HP-UX Linux Windows]Verwenden Sie für die Bestimmung und Behebung von Fehlern beim Messaging die Trace- und Protokollfunktionen von WebSphere Application Server.

[z/OS]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 bei der Implementierung oder bei der Ausführung von Anwendungen, die Messaging-Funktionen von WebSphere Application Server verwenden, Fehler auftreten, lesen Sie die folgenden Artikel:

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

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

Wenn bei Installation eines Fixpacks folgende Nachricht angezeigt wird, befolgen Sie die Anweisungen in IBM MQ-Ressourcenadapter verwalten, und versuchen Sie das Problem zu lösen:
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

Eine JMS-Anwendung kann keine Nachrichten mehr senden oder empfangen

Wenn Sie eine Anwendung für die Verwendung des Standard-Messaging-Providers konfigurieren, ordnen Sie sie einer der folgenden Ressourcengruppen zu:
  • 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.
Sie können die folgenden Anzeigen in der Administrationskonsole verwenden, um die Konfiguration Ihrer Anwendungen und JMS-Ressourcen zu prüfen:

Fehler beim Starten des MDB-Listener

Wenn der MDB-Listener für einen Listener-Port nicht gestartet werden kann, wird die folgende Nachricht angezeigt:
WMSG0019E: Der MDB-Listener {0} für das JMS-Ziel {1} kann nicht gestartet werden: {2} 
Überprüfen Sie zur Behebung dieses Problems die folgenden Faktoren:
  • 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.
  • [AIX Solaris HP-UX Linux Windows][IBM i]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.[z/OS]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

Wenn Sie versuchen, eine JMS-Anwendung mit aktivierter Sicherheit auszuführen, können Authentifizierungsprobleme auftreten, die sich durch eine oder mehrere der folgenden Fehlernachrichten äußern:
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.
Überprüfen Sie zur Behebung dieses Problems die Sicherheitskonfiguration:
  • 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. [z/OS]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][IBM i]
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.
Überprüfen Sie zur Behebung dieses Problems die Sicherheitskonfiguration. Wenn Sie IBM MQ als JMS-Provider für Transportmodus "Bindungen" konfigurieren, müssen Sie die Eigenschaft Transporttyp in der Warteschlangenverbindungsfactory von IBM MQ auf auf BINDUNGEN setzen. Außerdem müssen Sie eine der folgenden Optionen auswählen:
  • 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]

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.

Zur Behebung des Problems müssen Sie die potenzielle Anzahl paralleler Nachrichtenerzeuger oder -konsumenten und die Nachrichtengrößen schätzen und anschließend die Größe für den JVM-Heapspeicher des Anwendungsservers entsprechend konfigurieren. Beispiel:
  1. 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.
  2. Starten Sie die Administrationskonsole von WebSphere Application Server.
  3. Navigieren Sie zu Server > Servertypen > WebSphere-Anwendungsserver > Servername > Java- und Prozessverwaltung > Prozessdefinition > Java Virtual Machine, und konfigurieren Sie anschließend den verfügbaren JVM-Heapspeicher des Anwendungsservers über die Eigenschaften Anfangsgröße des Heapspeichers und Maximale Größe des Heapspeichers.
  4. Klicken Sie auf Ressourcen > JMS > JMS-Provider > Standard-Messaging-Provider > Aktivierungsspezifikationen > Name_der_Aktivierungsspezifikation, und konfigurieren Sie anschließend die Anzahl paralleler MDB-Endpunkte, die Nachrichten verarbeiten können, über die Eigenschaft Maximale Anzahl paralleler Endpunkte der Aktivierungsspezifikation für diese MDB.

Fehler "TopicConnectionFactory attributes clash"

Wenn Sie einen Subskribenten für JMS-Topics mit dem IBM MQ-Messaging-Provider erstellen, wird die folgende Fehlernachricht in der Datei "SystemOut.log" aufgezeichnet:
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"

Wenn Sie eine gesicherte Web-Service-Anwendung mit JMS-Transport und dem IBM MQ-Messaging-Provider ausführen, wird eventuell die folgende Fehlernachricht in der Datei "SystemOut.log" aufgezeichnet:
com.ibm.wsspi.wssecurity.SoapSecurityException: WSEC5061E: Der SOAP-Body ist nicht signiert.; null
Dieses Problem tritt unter den folgenden Umständen auf:
  • 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.

Gehen Sie wie folgt vor, um den Fehler zu beheben:
  1. Erstellen Sie einen eindeutigen Warteschlangenmanager mit einem eindeutigen Port im IBM MQ-Server.
  2. 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.
  3. 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][IBM i]

Fehler "javax.jms.JMSException: MQJMS3024: unable to start MDB listener"

Dieser Fehler kann auftreten, wenn eine nicht initialisierte Client-ID verwendet wird (d. h. eine Client-ID, die keiner permanenten Subskription zugeordnet ist). Sie können dieses Problem beheben, indem Sie die Client-ID auf eine der folgenden drei Arten festlegen:
[z/OS]

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
Schließlich sollte die folgende Nachricht angezeigt werden, die darauf hinweist, dass der z/OS-TCP-Proxy-Kanal ordnungsgemäß gestartet wurde:
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. 

Symbol, das den Typ des Artikels anzeigt. Referenzartikel



Symbol für Zeitmarke Letzte Aktualisierung: 25.05.2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rmj_prob0
Dateiname:rmj_prob0.html