javaではipアドレスではなくURLドメイン名で指定してるから問題ねーだろとおもってら
ダメだった。
ググって調べたら
JVMはデフォルトだと一回でも成功しているDNSキャッシュはずっと保持しつづける設定になっている。とのこと
なんでこんな設定になってるのかはDNSリバインディング対策とからしい
インストールされているjavaの中に
/usr/java/j2sdk1.4.2_13/jre/lib/security/java.security
設定ファイルがある
下記行がそのデフォルトを示す設定
#networkaddress.cache.ttl=-1
こいつを下記のように
networkaddress.cache.ttl=0
修正した。
networkaddress.cache.ttl (デフォルト: -1)
java.security で指定して、ネームサービスからの名前の検索に成功した場合のキャッシングポリシーを示します。 指定する値は、成功した検索結果をキャッシュする秒数を示す整数です。-1 の値は、「ずっとキャッシュする」という意味です。
networkaddress.cache.negative.ttl (デフォルト: 10)
java.security で指定して、ネームサービスからの名前の検索に失敗した場合のキャッシングポリシーを示します。 指定する値は、失敗した検索結果をキャッシュする秒数を示す整数です。0 の値は、「キャッシュしない」という意味です。 -1 の値は、「ずっとキャッシュする」という意味です。
java.security で指定して、ネームサービスからの名前の検索に成功した場合のキャッシングポリシーを示します。 指定する値は、成功した検索結果をキャッシュする秒数を示す整数です。-1 の値は、「ずっとキャッシュする」という意味です。
networkaddress.cache.negative.ttl (デフォルト: 10)
java.security で指定して、ネームサービスからの名前の検索に失敗した場合のキャッシングポリシーを示します。 指定する値は、失敗した検索結果をキャッシュする秒数を示す整数です。0 の値は、「キャッシュしない」という意味です。 -1 の値は、「ずっとキャッシュする」という意味です。
■jspで現在どのような状態になっているかも下記内容をいれれば確認できる
<%@ page import="java.net.*,java.security.*,sun.net.*" %>
<%
InetAddress inetAddress = InetAddress.getByName("www.google.co.jp");
byte[] address = inetAddress.getAddress();
out.println("Domain Name : "+inetAddress.getHostName() + "<br>");
out.println("IP Address : "+inetAddress.getHostAddress() + "<br>");
out.println("Cache Policy : "+InetAddressCachePolicy.get() + "<br>");
%>
■参考
http://docs.oracle.com/javase/jp/1.4/guide/net/properties.html
http://dev.classmethod.jp/cloud/apache-tomcat-elb-ttl-1/
http://koteitan.seesaa.net/article/95301330.html
http://dev.classmethod.jp/cloud/apache-tomcat-elb-ttl-1/
http://koteitan.seesaa.net/article/95301330.html
0 件のコメント:
コメントを投稿