メール・セッションのデバッグ
メール・アプリケーションをデバッグする場合は、メール・デバッグ機能を使用できます。メール・コンポーネントは、問題判別や調整に使用できるデバッグ情報をセッション・ベースで生成します。
このタスクについて
デバッグ・モードを使用可能にすると、アプリケーション・サーバーのメール・コンポーネントが起動し、以下のデータを標準出力ストリームに出力します。
- メール・サーバーとの対話
- メール・セッションのプロパティー
注: このトピックでは、
1 つ以上のアプリケーション・サーバー・ログ・ファイルを参照します。推奨される代替案として、分散システムや IBM® i システムの SystemOut.log、SystemErr.log、trace.log、activity.log ファイルではなく、High Performance Extensible Logging (HPEL) ログおよびトレース・インフラストラクチャーを使用するようにサーバーを構成できます。また HPEL は、ネイティブ z/OS® ロギング機能と連携させて使用することができます。HPEL を使用する場合、LogViewer コマンド・ライン・ツールを
サーバー・プロファイルの bin ディレクトリーから使用して、すべてのログ・ファイルにアクセスし、
情報をトレースできます。HPEL の使用について詳しくは、HPEL を使用してのアプリケーションの
トラブルシューティングに関する情報を参照してください。
手順
- 管理コンソールを開きます。
- とクリックします。
- 「デバッグ・モードを使用可能にする」をクリックします。 デバッグが、そのセッションについてのみ使用可能になります。
- 「適用」または「OK」をクリックします。
例
次の例は、メール・デバッグ出力の例を示しています。
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
この出力では、架空の名前 smtp.coldmail.com がサーバー名として指定されているため、Simple Mail Transfer Protocol (SMTP) サーバーに接続できないということが示されています。
以下のリストは、デバッガー出力の前のサンプルを読み取る際のヒントを提供します。
- DEBUG で始まる行がメール・プロバイダーによって実行時に出力されるのに対し、*** で始まる 2 行はアプリケーション・サーバーによって実行時に出力されます。
- コードの 2 番目のパラグラフの最初の 2 行は、いくつかの構成ファイルがスキップされることを示しています。メール・コンポーネントは、実行時にさまざまなロケーションから多数の構成ファイルをロードしようとします。これらのファイルがすべて必要だというわけではありません。ただし、必要なファイルにアクセスできないと、メール・コンポーネントは例外を作成します。このサンプルでは例外はなく、3 行目でデフォルト・プロバイダーがロードされることが述べられています。
- Providers Listed by Class Name または Providers Listed by Protocols で始まる次の 2 行は、ロードされたプロトコル・プロバイダーを表しています。リストされている 6 つのプロバイダーは、アプリケーション・サーバーに組み込まれたメール・プロバイダーの下で機能するデフォルトのプロトコル・プロバイダーです。特別なサービス・プロバイダーをインストールし、そのプロバイダーが現行メール・セッションで使用される場合は、そのプロバイダーがデフォルト・プロバイダーと一緒にここにリストされます。
- *** で始まる 2 行と、その下の数行は、アプリケーション・サーバーによって出力され、現行メール・セッションの構成プロパティーを表します。これらのプロパティーは、管理コンソールでユーザーが設定する名前ではなく、その内部名でリストされていますが、その両者の関係は容易に認識することができます。 例えば、mail.store.protocol プロパティーは、メール・セッション構成のコンソール・パネルの 「受信メール・プロパティー」セクションにある「プロトコル」プロパティーに対応します。リストされたプロパティーと値を検討し、それらが一致していることを確認してください。
- 例外スタックの上の数行は、メッセージ送信の際のメール・アクティビティーを表します。最初に、JavaMail API が、トランスポート・プロトコルが SMTP に設定されていること、および com.sun.mail.smtp.SMTPTransport プロバイダーが存在していることを認識します。 次に、出力ログが useEhlo および useAuth パラメーターを表示します。これらのパラメーターは SMTP によって使用されます。最後に、smtp.coldmail.com メール・サーバーに接続しようとする SMTP プロバイダーがログに表示されます。
- 次に、出力ログに例外スタックが表示されます。このデータは、指定されたメール・サーバーが存在しないか、または機能していないことを示します。