스킬(skills)/자바(Java)

com.sun.mail.smtp.SMTPTransport.close 의 lock 현상 해결 방법

후바스탱크 2014. 4. 3. 13:51

java mail 을 이용하여 메일 발송 시


com.sun.mail.smtp.SMTPTransport.close 구문에서 lock 이 걸려


thread hang이 발생하는 경우가 생기는 경우가 있다.



이럴 경우에는 mime 생성 시 timeout 값을 지정 해 주면 된다.

timeout 값이 지정되어 있지 않으면 다음과 같이 무한정 대기 상태에 빠지게 된다.


"webtob1-hth0(localhost:9900)-w06 [container1-26]" prio=1 tid=0x087e1288 nid=0x1ea0 runnable [0x5d1fc000..0x5d1fcea0]

at java.net.SocketInputStream.socketRead0(Native Method)

at java.net.SocketInputStream.read(SocketInputStream.java:129)

at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)

at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)

at java.io.BufferedInputStream.read(BufferedInputStream.java:235)

- locked <0x77cf8170> (a java.io.BufferedInputStream)

at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:75)

at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1440)

at com.sun.mail.smtp.SMTPTransport.close(SMTPTransport.java:645)

- locked <0x77cf7f78> (a com.sun.mail.smtp.SMTPTransport)

at javax.mail.Transport.send0(Transport.java:171)

at javax.mail.Transport.send(Transport.java:98)


그러므로 다음과 같이 발송하는 부분에서 timeout 값을 지정 해 주어야 한다.

아마 이 문제로 골치썩고 있던 분들은 크게 도움 되리라고 본다.


※ 자바 메일 이용시 참고할 API

https://javamail.java.net/nonav/docs/api/com/sun/mail/smtp/package-summary.html