JavaプログラムでdnsキャッシュTTLをコントロールする

linuxもnscdとかサービスを入れないとキャッシュしてくれない。
javaはデフォルトでDNSのキャッシュをしてくれない。

javaプログラムでdnsのキャッシュをしたいときには、起動オプションで設定できるようなので実験してみました。
(参考)
https://docs.oracle.com/javase/jp/8/docs/technotes/guides/net/properties.html

networkaddress.cache.ttl(デフォルト: -1)-1はずっとキャッシュするってことらしい
networkaddress.cache.negative.ttl (デフォルト: 10)


http://www.glamenv-septzen.net/view/1346 からサンプルプログラムを借りてきて
適当に
Thread.sleep(10 * 1000);
などいれて以下のような感じで実行してみたところ、プログラム実行中は1回しかクエリされませんでした。

java -Dnetworkaddress.cache.ttl=60 プログラム
java -Dnetworkaddress.cache.negative.ttl=0 プログラム


jbossなどで実装する場合にはrun.confのJAVA_OPTS=〜に同じようにセットしてあげれば良いと思います。

Linux環境であればnscdとか入れて普通にキャッシュした方が良いかもしれません。nscdは)


参考にしたページ:
https://docs.oracle.com/javase/jp/8/docs/technotes/guides/net/properties.html
http://www.glamenv-septzen.net/view/1346
http://qiita.com/arai-wa/items/492d91d85a7473007e37