메일 세션 디버깅
메일 애플리케이션을 디버깅할 때, 메일 디버깅 기능을 사용할 수 있습니다. 메일 컴포넌트는 세션 기초 당 디버깅 정보를 생성합니다. 이는 문제점 판별 또는 조정에 사용될 수 있습니다.
이 태스크 정보
디버그 모드를 가능하게 하는 것은 표준 출력 스트림에 다음 데이터를 출력하기 위해 애플리케이션 서버의 메일 컴포넌트를 트리거합니다.
- 메일 서버와 상호작용
- 메일 세션의 등록 정보
참고: 이 주제는 하나 이상의 애플리케이션 서버 로그 파일을
참조합니다. 권장되는 대안은 분배 및 IBM® i 시스템에서 SystemOut.log, SystemErr.log, trace.log 및 activity.log 파일을 사용하는 대신
HPEL(High Performance Extensible Logging) 로그를 사용하고
인프라를 추적하도록 서버를 구성하는 것입니다. 원시 z/OS® 로깅 기능과 연계하여 HPEL을 사용할 수도 있습니다. HPEL을 사용하는 경우
서버 프로파일 바이너리 디렉토리의 LogViewer 명령행 도구를 사용하여
모든 로그에 액세스하고 정보를 추적할 수 있습니다. HPEL 사용에 대한 자세한 정보는
HPEL을 사용한 애플리케이션 문제점 해결 정보를
참조하십시오.
프로시저
- 관리 콘솔을 여십시오.
- 을 클릭하십시오.
- 디버그 모드 사용으로 설정을 클릭하십시오. 디버깅은 해당 세션에만 사용으로 설정됩니다.
- 적용 또는 확인을 클릭하십시오.
예
다음 예제는 샘플 메일 디버깅 결과물을 표시합니다.
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이 서버 이름으로 지정되었기 때문에 SMTP(Simple Mail Transfer Protocol) 서버와의 연결이 실패했음을 보여줍니다.
다음 목록은 디버거 출력의
이전 샘플을 읽는 것에 대한 팁을 제공합니다.
- DEBUG에 의해 이끌어진 행이 실행 시간에 메일 제공자에 의해 출력되는 반면에, ***에 의해 이끌어진 두 개의 행은 실행 시간에 Application Server에 의해 인쇄됩니다.
- 코드의 두 번째 단락에서 첫 번째 소수 행은 일부 구성 파일을 건너뛴다고 설명합니다. 메일 컴포넌트는 실행 시간에 다른 위치로부터 수많은 구성 파일을 로딩하려고 시도합니다. 이러한 모든 파일이 필수인 것은 아닙니다. 그러나, 필수 파일에 액세스할 수 없는 경우, 메일 컴포넌트가 예외를 작성합니다. 이 예제에서, 예외가 없고 세 번째 행은 기본 제공자가 로딩된다고 발표합니다.
- 클래스 이름별로 나열되는 제공자 또는 프로토콜별로 나열된 제공자에 의해 이끌어진 다음 소수 행은 로딩되는 프로토콜 제공자를 표시합니다. 나열되는 여섯의 제공자는 Application Server를 위한 내장 메일 제공자를 받는 기본 프로토콜 제공자입니다. 특별한 서비스 제공자를 설치하고 이러한 제공자가 현재 메일 세션에 사용되는 경우, 해당 제공자가 기본 제공자로 여기에 나열됩니다.
- 그들 아래에 *** 및 소수 행에 의해 이끌어진 두 개의 행은 현재 메일 세션의 구성 특성을 표시하기 위해 Application Server에 의해 인쇄됩니다. 이러한 특성이 관리 콘솔에서 설정된 이름이 아닌 내부 이름으로 나열되더라도, 이들 사이의 관계를 쉽게 인식할 수 있습니다. 예를 들어, mail.store.protocol 특성은 메일 세션 구성에 대한 콘솔 패널의 수신 메일 특성 섹션에서 프로토콜 특성에 해당합니다. 나열된 등록 정보 및 값을 검토하여 이것이 일치하는지 확인하십시오.
- 메시지를 보낼 때 예외 스택 위의 소수 행은 메일 활동을 표시합니다. 먼저, 전송 프로토콜이 SMTP으로 설정되고 com.sun.mail.smtp.SMTPTransport 제공자가 있다는 것을 JavaMail API가 인식합니다. 다음, 출력 로그는 useEhlo 및 useAuth 매개변수를 표시하며, SMTP에 의해 사용됩니다. 마지막으로, 로그는 smtp.coldmail.com 메일 서버에 연결되려고 하는 SMTP 제공자를 표시합니다.
- 출력 로그는 다음에 예외 스택을 표시합니다. 이 데이터는 지정된 메일 서버가 존재하지 않거나 작동하지 않다는 것을 표시합니다.