【问题标题】:Is there any way to refresh DNS Server details of Java application at runtime?有没有办法在运行时刷新 Java 应用程序的 DNS 服务器详细信息?
【发布时间】:2019-05-17 18:34:17
【问题描述】:

我们有一个应用程序,它使用主机名连接到不同的应用程序。 如果我更改运行应用程序的系统的 DNS 服务器,应用程序开始失败并出现“java.net.UnknownHostException”。 但是从系统中,我可以使用 FQDN 向不同的应用程序发送 ping 请求。 要使 DNS 服务器更改生效,我们必须重新启动应用程序。

在 Java 中有什么方法可以在运行时刷新 DNS 服务器详细信息?

【问题讨论】:

  • 我们需要更多信息。这是什么类型的服务器?哪些服务开始失败(例如数据库连接池)?是所有类型的服务吗?
  • 它是一个运行 Web 应用程序的 tomcat 服务器。从这个应用程序中,我们使用 FQDN 连接到一个 Web 应用程序。
  • 请允许我们为您谷歌...java dns cache,直接指向How to make Java honor the DNS Caching Timeout?

标签: java linux dns fqdn


【解决方案1】:

您可以通过 3 种解决方案关闭 Java 的 dns 缓存:

解决方案 1:

用这个标志启动你的程序:

-Dsun.net.inetaddr.ttl=0

解决方案 2:

在您的 java 代码顶部使用 setProperty

java.security.Security.setProperty("networkaddress.cache.ttl" , "0")

解决方案 3:

$JRE_HOME/lib/security/java.security 设置:

networkaddress.cache.ttl = 0
networkaddress.cache.negative.ttl = 0

【讨论】:

    最近更新 更多