Disable DNS caching

JDK1.4

Once an application has performed network access (i.e. urlconnection, parsing of xml document with external references, etc), the DNS settings get cached so any subsequent operation will use the old settings even if the real settings have changed. To reset everything, you have to restart the server since the the default setting JVM setting is to cache forever.

There are 4 properties that can be used to override the default behaviour.

networkaddress.cache.ttl (default: -1)

Specified in java.security to indicate the caching policy for successful name lookups from the name service. The value is specified as as integer to indicate the number of seconds to cache the successful lookup. A value of -1 indicates “cache forever”.

networkaddress.cache.negative.ttl (default: 10)

Specified in java.security to indicate the caching policy for un-successful name lookups from the name service. The value is specified as as integer to
indicate the number of seconds to cache the failure for un-successful lookups. A value of 0 indicates “never cache”. A value of -1 indicates “cache forever”.

sun.net.inetaddr.ttl

This is a sun private system property which corresponds to networkaddress.cache.ttl. It takes the same value and has the same meaning, but can be set as a command-line option. However, the preferred way is to use the security property mentioned above.

sun.net.inetaddr.negative.ttl

This is a sun private system property which corresponds to networkaddress.cache.negative.ttl. It takes the same value and has the same meaning, but can be set as a command-line option. However, the preferred way is to use the security property mentioned above.
So you can disable caching by adding -Dsun.net.inetaddr.ttl=0 on the command line starting the JVM. But you can’t set the value of networkaddress.cache.ttl on the command line. You can set the required value in the java.security file located in %JRE%\lib\security

networkaddress.cache.ttl=60
networkaddress.cache.negative.ttl=10

or set the value in your code with:

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

JDK1.6 or more:

The default value has changed for:

networkaddress.cache.ttl

Done! Happy Coding!

Related posts:

Removing all duplicates from a List in Java
Java Program to Represent Graph Using Incidence Matrix
Hướng dẫn sử dụng Java String, StringBuffer và StringBuilder
Java – Write a Reader to File
Uploading MultipartFile with Spring RestTemplate
Count Occurrences of a Char in a String
Java Program to Implement Knight’s Tour Problem
MyBatis with Spring
Java Program to Implement Caesar Cypher
Mapping a Dynamic JSON Object with Jackson
Java Program to Implement Trie
Inheritance and Composition (Is-a vs Has-a relationship) in Java
ThreadPoolTaskExecutor corePoolSize vs. maxPoolSize
Java Program to Implement DelayQueue API
Configure a Spring Boot Web Application
Java Program to Generate a Graph for a Given Fixed Degree Sequence
Jackson – Marshall String to JsonNode
Functional Interfaces in Java 8
Allow user:password in URL
Java Program to Find Nearest Neighbor for Static Data Set
Java Program to Find the Edge Connectivity of a Graph
Java Program to Implement Aho-Corasick Algorithm for String Matching
Java Program to Find Transpose of a Graph Matrix
How to Store Duplicate Keys in a Map in Java?
An Introduction to ThreadLocal in Java
Java 8 Stream API Analogies in Kotlin
Java Program to do a Breadth First Search/Traversal on a graph non-recursively
Guide to @ConfigurationProperties in Spring Boot
Java Program to Find Basis and Dimension of a Matrix
Java Program to Give an Implementation of the Traditional Chinese Postman Problem
Limiting Query Results with JPA and Spring Data JPA
Giới thiệu Google Guice – Aspect Oriented Programming (AOP)