Debugging einer Mail-Sitzung

Zum Testen einer Mail-Anwendung können Sie hierfür das Debug-Feature der Mail-Komponente verwenden. Die Mail-Komponente generiert Debugging-Informationen auf Sitzungsbasis, die Sie für die Fehlerbestimmung oder Optimierung verwenden können.

Informationen zu diesem Vorgang

Wenn Sie den Debug-Modus aktivieren, wird die Mail-Komponente des Anwendungsservers angewiesen, die folgenden Daten in den Standardausgabedatenstrom auszugeben.
  • Interaktionen mit den Mail-Servern
  • Eigenschaften der Mail-Sitzung
Dieser Ausgabedatenstrom wird in die Datei SystemOut.log des jeweiligen Anwendungsservers umgeleitet.
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.

Vorgehensweise

  1. Öffnen Sie die Administrationskonsole.
  2. Klicken Sie auf Ressourcen > Mail > Mail-Sitzungen > Mail-Sitzung.
  3. Klicken Sie auf Debug-Modus aktivieren. Das Debugging wid nur für diese Sitzung aktiviert.
  4. Klicken Sie auf Anwenden oder OK.

Beispiel

Das folgende Beispiel zeigt eine Beispiel-Debug-Ausgabe der Komponente "Mail":

ResourceMgrIm I   WSVR0049I: Binding Test as mail/test
SystemOut     O *** In SessionReferenceable.getReference:
SystemOut     O  added StringRefAddr: type=ws.transport.password, content=****
SystemOut     O  added StringRefAddr: type=ws.isolated.class.loader, content=false
SystemOut     O  added StringRefAddr: type=mail.transport.protocol, content=smtp
SystemOut     O  added StringRefAddr: type=mail.imaps.class, content=com.sun.mail.imap.IMAPSSLStore
SystemOut     O  added StringRefAddr: type=mail.smtp.host, content=smtp.coldmail.com
SystemOut     O  added StringRefAddr: type=mail.debug, content=true
SystemOut     O  added StringRefAddr: type=mail.pop3s.class, content=com.sun.mail.pop3.POP3SSLStore
SystemOut     O  added StringRefAddr: type=mail.from, content=smith@coldmail.com
SystemOut     O  added StringRefAddr: type=mail.smtp.class, content=com.sun.mail.smtp.SMTPTransport
SystemOut     O  added StringRefAddr: type=mail.smtps.class, content=com.sun.mail.smtp.SMTPSSLTransport
SystemOut     O  added StringRefAddr: type=mail.imap.class, content=com.sun.mail.imap.IMAPStore
SystemOut     O  added StringRefAddr: type=mail.smtp.user, content=smith
SystemOut     O  added StringRefAddr: type=mail.pop3.class, content=com.sun.mail.pop3.POP3Store
SystemOut     O  added StringRefAddr: type=mail.mime.address.strict, content=true


SystemOut     O DEBUG: JavaMail version 1.4ea
SystemOut     O DEBUG: java.io.FileNotFoundException: C:\Program Files\IBM\WebSphere\AppServer\java\jre\lib\javamail.providers (The system cannot find the file specified.)
SystemOut     O DEBUG: !anyLoaded
SystemOut     O DEBUG: not loading resource: /META-INF/javamail.providers
SystemOut     O DEBUG: successfully loaded resource: /META-INF/javamail.default.providers
SystemOut     O DEBUG: Tables of loaded providers
SystemOut     O DEBUG: Providers Listed By Class Name: 
     {com.sun.mail.smtp.SMTPSSLTransport=javax.mail.Provider
[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems, Inc], 
com.sun.mail.smtp.SMTPTransport=javax.mail.Provider
[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc], 
com.sun.mail.imap.IMAPSSLStore=javax.mail.Provider
[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems, Inc], 
com.sun.mail.pop3.POP3SSLStore=javax.mail.Provider
[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], 
com.sun.mail.imap.IMAPStore=javax.mail.Provider
[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], 
com.sun.mail.pop3.POP3Store=javax.mail.Provider
[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc]}
SystemOut     O DEBUG: Providers Listed By Protocol: 
{imaps=javax.mail.Provider[STORE,imaps,com.sun.mail.imap.IMAPSSLStore,Sun Microsystems,Inc], 
imap=javax.mail.Provider[STORE,imap,com.sun.mail.imap.IMAPStore,Sun Microsystems, Inc], 
smtps=javax.mail.Provider[TRANSPORT,smtps,com.sun.mail.smtp.SMTPSSLTransport,Sun Microsystems,Inc], 
pop3=javax.mail.Provider[STORE,pop3,com.sun.mail.pop3.POP3Store,Sun Microsystems, Inc], 
pop3s=javax.mail.Provider[STORE,pop3s,com.sun.mail.pop3.POP3SSLStore,Sun Microsystems, Inc], 
smtp=javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]}
SystemOut     O DEBUG: successfully loaded resource: /META-INF/javamail.default.address.map
SystemOut     O DEBUG: !anyLoaded
SystemOut     O DEBUG: not loading resource: /META-INF/javamail.address.map
SystemOut     O DEBUG: java.io.FileNotFoundException: C:\Program Files\IBM\WebSphere\AppServer\java\jre\lib\javamail.address.map (The system cannot find the file specified.)
SystemOut     O *** In SessionFactory.setPasswordAuthentication, TRANSPORT PasswordAuthentication is based on:
SystemOut     O  url=smtp://smith@smtp.coldmail.com
SystemOut     O  user=smith
SystemOut     O  password=****
SystemOut     O *** In SessionFactory.getObjectInstance, session properties:
SystemOut     O  mail.transport.protocol=smtp
SystemOut     O  mail.imaps.class=com.sun.mail.imap.IMAPSSLStore
SystemOut     O  mail.smtp.host=smtp.coldmail.com
SystemOut     O  mail.debug=true

SystemOut     O  mail.pop3s.class=com.sun.mail.pop3.POP3SSLStore
SystemOut     O  mail.from=smith@coldmail.com
SystemOut     O  mail.smtp.class=com.sun.mail.smtp.SMTPTransport
SystemOut     O  mail.smtps.class=com.sun.mail.smtp.SMTPSSLTransport
SystemOut     O  mail.imap.class=com.sun.mail.imap.IMAPStore
SystemOut     O  mail.smtp.user=smith
SystemOut     O  mail.pop3.class=com.sun.mail.pop3.POP3Store
SystemOut     O  mail.mime.address.strict=true
SystemOut     O DEBUG: mail.smtp.class property exists and points to com.sun.mail.smtp.SMTPTransport
SystemOut     O DEBUG SMTP: useEhlo true, useAuth false
SystemOut     O DEBUG SMTP: trying to connect to host "smtp.coldmail.com", port 25, isSSL false


javax.mail.MessagingException: Unknown SMTP host: smtp.coldmail.com;
  nested exception is:
 java.net.UnknownHostException: smtp.coldmail.com
 at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1280)
 at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
 at javax.mail.Service.connect(Service.java:275)
 at javax.mail.Service.connect(Service.java:156)
 at javax.mail.Service.connect(Service.java:105)
 at javax.mail.Transport.send0(Transport.java:168)
 at javax.mail.Transport.send(Transport.java:98)
 at com.ibm.ws.mail.ut.TestServlet.doTask(TestServlet.java:104)
 at com.ibm.ws.mail.ut.TestServlet.doGet(TestServlet.java:65)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
 at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1397)
 at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:759)
 at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:429)
 at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:175)
 at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3512)
 at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:273)
 at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:896)
 at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1530)
 at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:161)
 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:455)
 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:384)
 at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:272)
 at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
 at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
 at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
 at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
 at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
 at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
 at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:202)
 at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:766)
 at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:896)
 at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1487)
Caused by: java.net.UnknownHostException: smtp.coldmail.com
 at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:196)
 at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
 at java.net.Socket.connect(Socket.java:519)
 at java.net.Socket.connect(Socket.java:469)
 at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:232)
 at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
 at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1250)
 ... 32 more

Diese Ausgabe weist darauf hin, dass bei der Verbindung zu einem SMTP-Server ein Fehler aufgetreten ist, weil als Servername der fiktive Name smtp.coldmail.com angegeben wurde.

Die folgende Liste enthält Tipps zum Lesen der vorherigen Debugger-Beispielausgabe:
  • Die Zeilen mit der Überschrift DEBUG werden vom Mail-Provider zur Laufzeit ausgegeben, wohingegen die beiden Zeilen mit der Überschrift *** vom Anwendungsserver zur Laufzeit ausgegeben werden.
  • Im zweiten Abschnitt des Codes zeigen die ersten paar Zeilen an, dass verschiedene Konfigurationsdateien übersprungen wurden. Die Mail-Komponente versucht zur Laufzeit, eine Reihe von Konfigurationsdateien von anderen Positionen zu lesen. Es werden jedoch nicht alle diese Dateien benötigt. Wenn eine erforderliche Datei nicht zugänglich ist, erstellt die Mail-Komponente eine Ausnahme. In unserem Beispiel gibt es keine Ausnahme. Die dritte Zeile gibt an, dass die Standardprovider geladen werden.
  • Die nächsten Zeilen, die mit Providers Listed by Class Name oder Providers Listed by Protocols beginnen, zeigen die geladenen Protokollprovider an. Die sechs aufgelisteten Provider sind die Standardprotokollprovider, die mit dem integrierten Mail-Provider für den Anwendungsserver bereitgestellt werden. Wenn Sie spezielle Serviceprovider installieren und diese Provider in der aktuellen Mail-Sitzung verwendet werden, werden diese Provider hier zusammen mit den Standardprovidern aufgelistet.
  • Die beiden mit *** beginnenden sowie die darauf folgenden Zeilen werden vom Anwendungsserver ausgegeben und zeigen die Konfigurationseigenschaften der aktuellen Mail-Sitzung an. Obwohl diese Eigenschaften nach ihrem internen Namen und nicht nach dem in der Administrationskonsole definierten Namen aufgelistet sind, ist die Beziehung zwischen den Eigenschaften leicht erkennbar. Die Eigenschaft "mail.store.protocol" entspricht beispielsweise der Eigenschaft Protokoll im Abschnitt Eigenschaften eingehender Mails in der Konsolanzeige für die Konfiguration der Mail-Sitzung. Überprüfen Sie die aufgelisteten Eigenschaften und Werte.
  • Die Zeilen über dem Exception-Block zeigen die Mail-Aktivitäten beim Senden einer Nachricht. Zunächst erkennt die JavaMail-API, dass das Transportprotokoll auf SMTP gesetzt ist und der Provider "com.sun.mail.smtp.SMTPTransport" vorhanden ist. Danach werden im Ausgabeprotokoll die Parameter "useEhlo" und "useAuth" angezeigt, die von SMTP verwendet werden. Schließlich zeigt das Protokoll, dass der SMTP-Provider versucht, eine Verbindung zum Mail-Server "smtp.coldmail.com" herzustellen.
  • Im Anschluss daran folgt der Ausnahme-Stack. Diese Daten weisen darauf hin, dass der angegeben Mail-Server nicht vorhanden ist oder nicht funktioniert.

Symbol, das den Typ des Artikels anzeigt. Taskartikel



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