我正面临着JVM和DNS的问题.
我正在阅读的所有内容(包括文档和此内容)都说我可以使用networkaddress.cache.ttl
可以设置的JVM DNS缓存java.security.Security.setProperties
,但是可以通过使用系统属性的标准方法来设置.我已成功将其更改为0,因此我的JVM中不再有缓存.
但是现在,在每次调用时InetAddress.getByName("mytest.com")
,似乎我的JVM正在使用系统 DNS缓存(在我的情况下是Windows 8).实际上,在方法的两次调用之间,我已经更改了"mytest.com"的BIND9属性,但IP返回仍然是相同的.这是工作流程:
setCachePolicyInJVM(0)
在我的Java代码中.mytest.com
为192.168.1.在BIND9中188,重启.InetAddress.getByName("mytest.com").getHostAddress();
- > 192.168.1.188mytest.com
- > 192.168.1.在BIND9 160,重启.InetAddress.getByName("mytest.com").getHostAddress();
- > 192.168.1.188(如果没有缓存,则应为160).InetAddress.getByName("mytest.com").getHostAddress();
- > 192.168.1.160我已多次读过JVM不使用系统缓存,但这是错误的:它显然是这样.
我们如何绕过操作系统 DNS缓存强制每次调用新的DNS解析?