spring 2.5 JavaMailSenderImpl を使用してメールを送信しました。10,000 通以上のメールを送信すると、プログラムがブロックされました。これは、jstack によって示されたスレッド情報でした。
"pool-4-thread-6" prio=10 tid=0x000000001b94d800 nid=0x44fb runnable [0x0000000041901000]
java.lang.Thread.State: RUNNABLE
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.read(SocketInputStream.java:150)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
- **locked** <0x00000000e6e2d170> (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.openServer(SMTPTransport.java:1260)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
at javax.mail.Service.connect(Service.java:275)
at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.ja
va:389)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java
:342)
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java
:338)
メール接続が原因でこのプログラムがブロックされたのかもしれませんが、Spring 構成ファイルに out-time をデプロイしました。
<property name ="javaMailProperties">
<props>
<prop key="mail.smtp.connectiontimeout">25000</prop>
<prop key="mail.smtp.timeout">25000</prop>
</props>
</property >
時間が超過すると、プログラムは例外をスローする必要がありますが、それでもブロックされます!! 理由わかる人いますか?