JavaでDNSキャッシュのTTLを設定する
以前ハマったのでメモ。
Javaのデフォルトの設定では、URLConnection等で外部サービスに接続した際のDNSキャッシュがプロセス停止まで保持され続けるようです。
なので、SMTPサーバにGmailを使ってたりすると、あちらのサーバーのIPが変更されて接続エラーとなった場合、プロセスを再起動するまで現象が解消されないということになります。
解決策は、(JAVA_HOME)/jre/lib/security/java.securityの以下のプロパティを変更すること。
[bash]
# 単位は秒数
networkaddress.cache.ttl = 10
[/bash]
最近は外部サービス使うケースが多いのでハマる人多いかも。