5

Java 1.6 で DNS キャッシュのタイムアウトを変更しようとしています。ここで、次のようなものを使用することについての議論が見られます。

java.security.Security.setProperty ("networkaddress.cache.ttl" , TTL_SECS);

しかし、私はWin 7でこの簡単なテストを試しました....

System.out.println("DEFAULT DNS TTL: "+sun.net.InetAddressCachePolicy.get());
java.security.Security.setProperty ("networkaddress.cache.ttl" , "123");    
System.out.println("DEFAULT DNS TTL: "+sun.net.InetAddressCachePolicy.get());

...そして、出力は変わりません。これは、Java インストールのセキュリティ プロパティで変更できるようですが、簡潔にするためにコード内に保持することをお勧めします。それを達成する方法はありますか?

ありがとう。

4

3 に答える 3

14

これを試して、得られる出力を確認してください。クラスのロード時にプロパティを設定する必要があります。

static {
    java.security.Security.setProperty ("networkaddress.cache.ttl" , "12");    
}
public static void main(String[] args) {
    System.out.println("DEFAULT DNS TTL: "+sun.net.InetAddressCachePolicy.get());
    java.security.Security.setProperty ("networkaddress.cache.ttl" , "123");    
    System.out.println("DEFAULT DNS TTL: "+sun.net.InetAddressCachePolicy.get());
}
于 2012-12-11T10:34:39.447 に答える
2

これらはシステム プロパティではなく、java.security ファイルで設定されます。優先されない対応するシステム プロパティについては、「ネットワーク プロパティ」の「Sun 実装固有のプロパティ」を参照してください。

于 2012-08-24T05:15:28.357 に答える
0

Android 4.0 (Ice Cream Sandwich) 以前では、DNS キャッシングは InetAddress と C ライブラリの両方によって実行されていたため、DNS TTL を正しく処理できませんでした。それ以降のリリースでは、キャッシングは C ライブラリによってのみ行われ、DNS TTL が受け入れられます。

Google デスク

于 2015-03-16T10:30:19.900 に答える