Según la respuesta de Byron, no puede establecer networkaddress.cache.ttl
o networkaddress.cache.negative.ttl
como Propiedades del sistema mediante el uso de la -D
marca o la llamada System.setProperty
porque 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 -D
marca 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 -D
bandera 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.setProperty
a 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 -D
bandera al iniciar el proceso de JVM.
Si no usa -Dsun.net.inetaddr.ttl=0
o llama Security.setProperty
, deberá editar $JRE_HOME/lib/security/java.security
y 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)