Sesuai jawaban Byron, Anda tidak dapat mengatur networkaddress.cache.ttl
atau networkaddress.cache.negative.ttl
sebagai Properti Sistem dengan menggunakan -D
bendera atau memanggil System.setProperty
karena ini bukan properti Sistem - ini adalah properti Keamanan .
Jika Anda ingin menggunakan properti Sistem untuk memicu perilaku ini (sehingga Anda dapat menggunakan -D
bendera atau panggilan System.setProperty
), Anda perlu menyetel properti Sistem berikut :
-Dsun.net.inetaddr.ttl=0
Properti sistem ini akan mengaktifkan efek yang diinginkan.
Namun perlu diketahui: jika Anda tidak menggunakan -D
flag saat memulai proses JVM dan memilih untuk memanggil ini dari kode:
java.security.Security.setProperty("networkaddress.cache.ttl" , "0")
Kode ini harus dijalankan sebelum kode lain di JVM mencoba melakukan operasi jaringan.
Ini penting karena, misalnya, jika Anda memanggil Security.setProperty
file .war dan menerapkan .war ke Tomcat, ini tidak akan berhasil: Tomcat menggunakan tumpukan jaringan Java untuk menginisialisasi dirinya jauh lebih awal daripada kode .war Anda dieksekusi. Karena 'kondisi balapan' ini, biasanya lebih nyaman untuk menggunakan-D
bendera saat memulai proses JVM.
Jika Anda tidak menggunakan -Dsun.net.inetaddr.ttl=0
atau memanggil Security.setProperty
, Anda perlu mengedit $JRE_HOME/lib/security/java.security
dan menyetel properti keamanan tersebut dalam file itu, mis
networkaddress.cache.ttl = 0
networkaddress.cache.negative.ttl = 0
Tapi perhatikan peringatan keamanan di komentar seputar properti tersebut. Lakukan ini hanya jika Anda cukup yakin bahwa Anda tidak rentan terhadap serangan spoofing DNS .
java.security.Security
(setidaknya di jdk7)