设置Java DNS缓存TTL

Jon*_*han 5 java dns

我正在尝试更改Java 1.6中的DNS缓存超时.我在这里讨论使用如下内容的讨论:

java.security.Security.setProperty ("networkaddress.cache.ttl" , TTL_SECS);
Run Code Online (Sandbox Code Playgroud)

但我在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());
Run Code Online (Sandbox Code Playgroud)

......并且输出不会改变.看来这可以在Java安装的安全属性中进行更改,但我不愿意将其保留在代码中以保持整洁.任何想法如何实现?

谢谢.

小智 12

试试这个,看看你得到的输出.加载类时需要设置属性.

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());
}
Run Code Online (Sandbox Code Playgroud)


use*_*421 3

这些不是系统属性:它们是在 java.security 文件中设置的。对于相应的非首选系统属性,请参阅网络属性中的“特定于 Sun 实现的属性” 。