URLConnectionのDNSキャッシュ

URLConnectionを使用したプログラムは良く見かけますが、
使うにあたりDNSについてがあまりなかった。
ちょうど、ネットワークの不調でURLConnectionが
ずっとTimeoutになっていたので調べてみた。


// DNS検索に成功した場合のキャッシュしておく秒数
Security.setProperty("networkaddress.cache.ttl","60");
// DNS検索に失敗した場合のキャッシュしておく秒数
Security.setProperty("networkaddress.cache.negative.ttl","10");

上記コードを組み込んだのはいいが、うまく制御できない・・・
う〜ん、Systemとかに設定しても一緒だった。
と小一時間ほど悩んで、java.securityの存在を思い出した。
%JAVA_HOME%/jre/lib/security/java.security
↑これで設定したばっちりうまくいった。
調子にのり、コマンドオプションでも一応試した。
ちなみに、コマンドオプションの場合は、
・networkaddress.cache.ttl ⇒ sun.net.inetaddr.ttl
・networkaddress.cache.negative.ttl ⇒ sun.net.inetaddr.negative.ttl
にキーを変更しないと駄目。
ってことで、


$root>java -Dsun.net.inetaddr.ttl=60

成功!GJ!

しかし、デフォルトでDNS検索成功時のキャッシュが無限ってどうなんだ・・・