Par Byron réponse, vous ne pouvez pas définir d' networkaddress.cache.ttl
ou networkaddress.cache.negative.ttl
que les Propriétés du Système à l'aide de la -D
drapeau ou en appelant System.setProperty
parce que ce ne sont pas des propriétés du Système - ils sont la Sécurité des propriétés.
Si vous souhaitez utiliser un Système de propriété pour déclencher ce comportement, de sorte que vous pouvez utiliser l' -D
drapeau ou appelez - System.setProperty
), vous pouvez définir les éléments suivants du Système de la propriété:
-Dsun.net.inetaddr.ttl=0
Ce système de propriété permettra à l'effet désiré.
Mais attention: si vous n'utilisez pas l' -D
drapeau lors du démarrage de la JVM processus et choisir d'appeler ce code à la place:
java.security.Security.setProperty("networkaddress.cache.ttl" , "0")
Ce code doit s'exécuter avant toute autre code dans la JVM tentatives pour effectuer des opérations réseau.
Ceci est important parce que, par exemple, si vous appelez Security.setProperty
dans une .la guerre de fichier et déployés .la guerre de Tomcat, ce ne serait pas le travail: Tomcat utilise le Java pile de réseau pour initialiser beaucoup plus tôt que votre .la guerre de code est exécuté. En raison de cette "race condition", il est souvent plus pratique d'utiliser l' -D
drapeau lors du démarrage de la JVM processus.
Si vous n'utilisez pas -Dsun.net.inetaddr.ttl=0
ou appelez - Security.setProperty
, vous devrez éditer $JRE_HOME/lib/security/java.security
et définissez les propriétés de sécurité dans ce fichier, par exemple
networkaddress.cache.ttl = 0
networkaddress.cache.negative.ttl = 0
Mais attention aux avertissements de sécurité dans les commentaires relatifs à ces propriétés. Faire cela seulement si vous êtes assez confiant que vous ne sont pas sensibles à l'usurpation DNS attaques.