相关疑难解决方法(0)

JVM和OS DNS缓存

我正面临着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返回仍然是相同的.这是工作流程:

  1. setCachePolicyInJVM(0) 在我的Java代码中.
  2. 设置mytest.com为192.168.1.在BIND9中188,重启.
  3. InetAddress.getByName("mytest.com").getHostAddress(); - > 192.168.1.188
  4. 设置mytest.com- > 192.168.1.在BIND9 160,重启.
  5. InetAddress.getByName("mytest.com").getHostAddress(); - > 192.168.1.188(如果没有缓存,则应为160).
  6. 刷新Windows DNS
  7. InetAddress.getByName("mytest.com").getHostAddress(); - > 192.168.1.160

我已多次读过JVM不使用系统缓存,但这是错误的:它显然是这样.

我们如何绕过操作系统 DNS缓存强制每次调用新的DNS解析?

java dns caching jvm

12
推荐指数
1
解决办法
8555
查看次数

标签 统计

caching ×1

dns ×1

java ×1

jvm ×1