JavaMailを使用してPOP3サーバーに接続しています。しかしJavaMailのタイムアウト設定を正しく設定する方法
props.setProperty("mail.pop3.connectionpooltimeout", "3000");
props.setProperty("mail.pop3.connectiontimeout", "3000");
props.setProperty("mail.pop3.timeout", "3000");
、いくつかのケースでは、タイムアウトが正常に動作しますが、時々、JavaMailのフリーズ:電子メールサーバーが応答しない場合にJavaMailをlongに待機しませんように
はさらに、私は、次のプロパティを設定しました
DEBUG POP3: connecting to host "pop3.yahoo.com", port 110, isSSL false
ポートまたはプロトコルの変更(SSL、TLS ..)は効果がありません。私はホストが単に存在しないと仮定します。
たとえば、の場合、pop.mail.yahoo.com(適切なホスト名)ではなくpop3.yahoo.comをポーリングすると、タイムアウト例外が発生するまで非常に長い時間待たなければなりません。 は数分後、私は次の例外を取得し、アプリケーションが実行し続け:
java.net.ConnectException: Operation timed out
pop3.yahoo.comが存在するようだが応答しなくなります。
localhost:~ me$ ping pop3.yahoo.com
PING pop3.yahoo.com (206.190.46.10): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
^C
をあなたは、なぜ尋ねるかもしれません私はpop.mail.yahoo.comの代わりにpop3.yahoo.comを使用します。 さて、アプリケーションのユーザーが間違ったホスト名を挿入した場合にどうなるかをテストしたかっただけです。
この問題は、このレポートhttp://www.opensubscriber.com/message/[email protected]/180946.htmlと関連していると思われます。電子メールサーバーが接続を閉じると問題が発生するというポスターが主張されています。 JavaMailはそれから非常に長い間待機しているようです(理由はわかりません)。
投稿されたリンクで問題が解決しなかったので、誰かがこれを修正するか、少なくともデバッグする方法を知っていますか?
は本当にありがとうございます!
yahooが本当にすべてのパケットを静かにドロップすると、なぜJavamailはプロパティオブジェクトで提供したタイムアウト設定を尊重しないのですか?それは本当に奇妙です。 – Timo
@valmarええ、JavaMailのバグのように見えますが、いくつかの特別なデバッグをしなくても、実際に知る方法はありません。 – wds