Según la respuesta de Byron, no puede establecer networkaddress.cache.ttlo networkaddress.cache.negative.ttlcomo Propiedades del sistema mediante el uso de la -Dmarca o la llamada System.setPropertyporque estas no son propiedades del sistema, son propiedades de seguridad .
Si desea usar una propiedad del sistema para activar este comportamiento (para que pueda usar la -Dmarca o la llamada System.setProperty), querrá establecer la siguiente propiedad del sistema :
-Dsun.net.inetaddr.ttl=0
Esta propiedad del sistema permitirá el efecto deseado.
Pero tenga en cuenta: si no usa la -Dbandera al iniciar el proceso de JVM y elige llamar a esto desde el código:
java.security.Security.setProperty("networkaddress.cache.ttl" , "0")
Este código debe ejecutarse antes de que cualquier otro código en la JVM intente realizar operaciones de red.
Esto es importante porque, por ejemplo, si llamó Security.setPropertya un archivo .war y lo implementó .war en Tomcat, esto no funcionaría: Tomcat usa la pila de redes Java para inicializarse mucho antes de que se ejecute su código .war. Debido a esta 'condición de carrera', generalmente es más conveniente usar la -Dbandera al iniciar el proceso de JVM.
Si no usa -Dsun.net.inetaddr.ttl=0o llama Security.setProperty, deberá editar $JRE_HOME/lib/security/java.securityy configurar esas propiedades de seguridad en ese archivo, por ejemplo
networkaddress.cache.ttl = 0
networkaddress.cache.negative.ttl = 0
Pero preste atención a las advertencias de seguridad en los comentarios sobre esas propiedades. Solo haga esto si está razonablemente seguro de que no es susceptible a ataques de suplantación de DNS .
java.security.Security(al menos en jdk7)