ひでっぷの技術メモ

はてなダイアリーから移行しました

Jakarta Commons Net FtpClientのタイムアウト設定

FtpClientの接続タイムアウト設定はsetDefaultTimeout(int timeout)メソッドで行う。timeoutの単位は(ms)。
これをやっておかないとftp接続時にネットが切断されたりした場合ずーっと待ってる気がする。
ちなみに接続後のタイムアウト設定はsetSoTimeout(int timeout)メソッド。
混同するなってJavadocに書いてありました。
connect()前にsetSoTimeoutメソッドを呼び出すとエラーがでます。

setDefaultTimeoutメソッドはFtpClientクラスの親クラスであるSocketClientクラスで定義されてます。
だから当然ですがSmtpClientクラスなんかでもこの設定が有効になります。
(JavaMailのタイムアウト設定よりずっとわかりやすいです)


タイムアウト1分で設定したのに実際にexceptionがでたのは3分後くらいだった。
この辺はもうちょっとテストしてみないとわからないけどとりあえず待ちっぱなしになるより全然いいです。

たまたまconnect時に切断するという状況を作り出すことができたため気づきました。
このたまたまがなかったらきっとリリース後に問題になってただろうな。
こういうテストってなかなかしづらいです・・・。