Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting Java DNS cache TTL

Tags:

java

dns

I'm attempting to change the DNS cache timeout in Java 1.6. I see discussion here of using something like the following:

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

But I've tried this simple test in 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());

... and the output doesn't change. It seems this can be changed in the Java installation's security properties but I preffer to keep this in the code for neatness. Any ideas how to achieve that?

Thanks.

like image 524
Jonathan Avatar asked Aug 23 '12 20:08

Jonathan


2 Answers

Try this and see the output you get. The property needs to be set when the class is loaded.

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());
}
like image 117
Ravi Nori Avatar answered Nov 04 '22 22:11

Ravi Nori


These are not system properties: they are set in the java.security file. For the corresponding system properties, which are non-preferred, see 'Sun implementation-specific properties' in Networking Properties.

like image 22
user207421 Avatar answered Nov 04 '22 22:11

user207421