Byron cevap gereğince, ayarlayamıyor networkaddress.cache.ttl
veya networkaddress.cache.negative.ttl
Sistem Özellikleri olarak kullanarak -D
bayrak veya çağıran System.setProperty
bu sistem özellikleri olmadıklarından - olduklarını Güvenlik özellikleri.
Bu davranışı tetiklemek için bir Sistem özelliği kullanmak istiyorsanız (böylece -D
bayrağı veya çağrıyı kullanabilirsiniz System.setProperty
), aşağıdaki Sistem özelliğini ayarlamak isteyeceksiniz :
-Dsun.net.inetaddr.ttl=0
Bu sistem özelliği, istenen etkiyi sağlayacaktır.
Ancak unutmayın: -D
JVM sürecini başlatırken bayrağı kullanmazsanız ve bunun yerine bunu koddan çağırmayı seçerseniz :
java.security.Security.setProperty("networkaddress.cache.ttl" , "0")
Bu kod , JVM'deki diğer herhangi bir kod ağ işlemlerini gerçekleştirmeye çalışmadan önce yürütülmelidir.
Bu önemlidir, çünkü, örneğin, Security.setProperty
bir .war dosyasını çağırıp bu .war'ı Tomcat'e konuşlandırdıysanız, bu işe yaramaz: Tomcat, .war kodunuzun çalıştırılmasından çok daha önce kendisini başlatmak için Java ağ yığınını kullanır. Bu 'yarış durumu' nedeniyle -D
, JVM sürecini başlatırken genellikle bayrağı kullanmak daha uygundur .
Kullanmaz -Dsun.net.inetaddr.ttl=0
veya arama yapmazsanız , o dosyadaki güvenlik özelliklerini Security.setProperty
düzenlemeniz $JRE_HOME/lib/security/java.security
ve ayarlamanız gerekir , örn.
networkaddress.cache.ttl = 0
networkaddress.cache.negative.ttl = 0
Ancak bu mülkleri çevreleyen yorumlardaki güvenlik uyarılarına dikkat edin. Bunu yalnızca DNS sahtekarlığı saldırılarına karşı duyarlı olmadığınızdan makul ölçüde eminseniz yapın .
java.security.Security
(en azından jdk7'de)