Débogage de sessions de messagerie

Lorsque vous déboguez une application de messagerie, vous pouvez utiliser la fonction de débogage de messagerie. Le composant de messagerie génère des informations de débogage, par session, qui peuvent être utilisées pour l'identification des problèmes ou pour l'optimisation.

Pourquoi et quand exécuter cette tâche

Lorsque le débogueur est activé, le composant de messagerie du serveur d'applications imprime les données suivantes dans le fichier stream de sortie standard :
  • interactions avec les serveurs de messagerie
  • propriétés de la session de messagerie
Ce flux de sortie est réacheminé vers le fichier SystemOut.log pour le serveur d'applications concerné.
Remarque : Cette rubrique fait référence à un ou plusieurs des fichiers journaux de serveur d'applications. Il est recommandé de configurer le serveur de telle sorte qu'il utilise l'infrastructure de journalisation et de trace HPEL (High Performance Extensible Logging) à la place des fichiers SystemOut.log, SystemErr.log, trace.log et activity.log sur les systèmes distribués et IBM® i. Vous pouvez également utiliser HPEL conjointement avec vos fonctions de journalisation z/OS natives. Si vous utilisez l'infrastructure HPEL, vous pouvez accéder à toutes les informations de journalisation et de trace en utilisant l'outil de ligne de commande LogViewer à partir de votre répertoire bin de profil de serveur. Pour plus d'informations sur l'utilisation de HPEL, voir les informations sur l'utilisation de HPEL en vue du traitement des incidents liés aux applications.

Procédure

  1. Ouvrez la console d'administration.
  2. Cliquez sur Ressources > Messagerie > Sessions de messagerie > session messagerie.
  3. Cliquez sur Activer le mode débogage. Le débogage n'est activé que pour cette session.
  4. Cliquez sur Valider ou sur OK.

Exemple

L'exemple suivant affiche une sortie de débogage de messagerie :

ResourceMgrIm I   WSVR0049I: Test de liaison comme test/messagerie
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 
(Le système ne trouve pas le fichier spécifié.)
SystemOut     O DEBUG: !anyLoaded
SystemOut     O DEBUG: aucun chargement de ressource : /META-INF/javamail.providers
SystemOut     O DEBUG: chargement de ressource exécuté : /META-INF/javamail.default.providers
SystemOut     O DEBUG: Tableaux des fournisseurs chargés
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: chargement de ressource exécuté : /META-INF/javamail.default.address.map
SystemOut     O DEBUG: !anyLoaded
SystemOut     O DEBUG: aucun chargement de ressource : /META-INF/javamail.address.map
SystemOut     O DEBUG: java.io.FileNotFoundException: 
     C:\Program Files\IBM\WebSphere\AppServer\java\jre\lib\javamail.address.map 
     (Le système ne trouve pas le fichier spécifié.)
SystemOut     O *** Dans SessionFactory.setPasswordAuthentication, TRANSPORT PasswordAuthentication est basé sur :
SystemOut     O  url=smtp://smith@smtp.coldmail.com
SystemOut     O  user=smith
SystemOut     O  password=****
SystemOut     O *** Dans SessionFactory.getObjectInstance, propriétés de session :
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 propriété existe et pointe sur com.sun.mail.smtp.SMTPTransport
SystemOut     O DEBUG SMTP: useEhlo true, useAuth false
SystemOut     O DEBUG SMTP: tentative de connexion à l'hôte "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

Cet exemple de sortie illustre un échec de connexion sur un serveur SMTP (Simple Mail Transfer Protocol) en raison d'un nom fictif, smtp.coldmail.com, spécifié comme nom de serveur.

La liste suivante donne des conseils pour la lecture des résultats de l'exemple précédent de débogage :
  • Les lignes commençant par DEBUG sont imprimées par le fournisseur de messagerie au cours de l'exécution tandis que les deux lignes commençant par *** sont imprimées par le serveur d'application au cours de l'exécution.
  • Dans le second paragraphe du code, les quelques premières lignes indiquent que certains fichiers de configuration ont été ignorés. En phase d'exécution, le composant de messagerie tente de charger un certain nombre de fichiers de configuration à partir de différents emplacements. Tous ces fichiers ne sont pas requis. Si un fichier requis est inaccessible, le composant de messagerie crée une exception. Dans cet exemple, il n'y a pas d'exception et la troisième ligne indique que les fournisseurs par défaut ont été chargés.
  • Les quelques lignes suivantes commençant soit par Fournisseurs répertoriés par nom ce classe soit par Fournisseurs répertoriés par protocoles affichent les fournisseurs de protocoles ayant été chargés. Les six fournisseurs répertoriés ici sont les fournisseurs de protocole par défaut qui figurent dans le fournisseur de messagerie intégré du serveur d'applications. Si vous avez installé des fournisseurs de service spéciaux et si ces fournisseurs sont utilisés dans la session de messagerie en cours, ils s'affichent ici avec les fournisseurs par défaut.
  • Les deux lignes commençant par *** et les quelques lignes situées juste en dessous sont imprimées par le serveur d'applications pour indiquer les propriétés de configuration de la session de messagerie en cours. Bien que ces propriétés soient répertoriées en fonction de leur nom interne au lieu de celui qui est utilisé dans la console d'administration, il n'est pas difficile d'établir des similarités entre eux. Par exemple, la propriété mail.store.protocol correspond à la propriété Protocole dans la section Propriétés de courrier entrant du panneau de la console pour la configuration de session de messagerie. Examinez les propriétés et les valeurs affichées pour vous assurer qu'elles correspondent.
  • Les quelques lignes figurant au-dessus de la pile d'exceptions indiquent les activités de messagerie lors de l'envoi d'un message. Dans un premier temps, l'API JavaMail reconnaît que le protocole de transport est défini sur SMTP et que le fournisseur com.sun.mail.smtp.SMTPTransport existe. Ensuite, le journal de sortie affiche les paramètres useEhlo et useAuth utilisés par le SMTP. Finalement, le journal indique que le fournisseur SMTP essaie de se connecter au serveur de messagerie smtp.coldmail.com.
  • Le prochain affichage du journal de sortie est la pile d'exceptions. Ces données indiquent que le serveur de messagerie spécifié n'existe pas ou ne fonctionne pas.

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tmai_jdebug
Nom du fichier : tmai_jdebug.html