Sesuai jawaban Byron, Anda tidak dapat mengatur networkaddress.cache.ttlatau networkaddress.cache.negative.ttlsebagai Properti Sistem dengan menggunakan -Dbendera atau memanggil System.setPropertykarena ini bukan properti Sistem - ini adalah properti Keamanan .
Jika Anda ingin menggunakan properti Sistem untuk memicu perilaku ini (sehingga Anda dapat menggunakan -Dbendera 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 -Dflag 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.setPropertyfile .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=0atau memanggil Security.setProperty, Anda perlu mengedit $JRE_HOME/lib/security/java.securitydan 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)