更改JAVA DNS缓存设置

时间:2017-03-23 12:41:24

标签: java caching dns

我在我的网络应用程序中使用java8。我想更改JAVA DNS Cache的设置。 这是代码:

java.security.Security.setProperty("networkaddress.cache.ttl", "60");
java.security.Security.setProperty("sun.net.inetaddr.negative.ttl", "10");

我想知道在DNS机会初始化之前我应该​​在哪里编写代码(在哪个类文件中)以反映JVM中的更改。

我想使用java实用程序类文件进行更改。请同样建议。 还建议如何在build.xml(ant)中配置相同的更改?

我同意他们建议更改安全文件时更新的答案。但是,由于我在项目中的限制,我想以其他方式了解配置。

5 个答案:

答案 0 :(得分:1)

您也可以通过添加此行

来全局设置它

networkaddress.cache.ttl=60

$JAVA_HOME/jre/lib/security/java.security档。

答案 1 :(得分:1)

最好的办法是直接在/ lib / security

中的java.security文件中设置它

注意:如果您使用的是共享JVM,则需要在启动命令-Djava.security.properties=/DirectoryPath/filename中设置此项并将security.overridePropertiesFile的值设置为true。

答案 2 :(得分:0)

如果你想在代码中设置它,那么你有很多选择 - 你只需要将代码放在你知道将在应用程序启动后处理第一条消息之前执行的地方。

我的首选是注册ContextListener并将代码放在那里。

答案 3 :(得分:0)

我遇到了类似的问题,我的java应用程序无法解析该URL。 除了建议的内容(即networkaddress.cache.ttl和networkaddress.cache.negative.ttl)之外,我还必须重置URL对象中的缓存。

Room

答案 4 :(得分:0)

我不知道(build.xml)ant。如果您正在使用spring框架,我仍然会尝试一下。以下是我在应用程序初始化时设置networkaddress.cache.ttl的操作。

  1. 如下定义一个新的Java类。

    package com.example.util;
    public class SecurityManager {
      public SecurityManager() {
        java.security.Security.setProperty("networkaddress.cache.ttl", "60");
      }
    }
    
  2. 询问spring框架,以在创建spring容器时将上述类的对象实例化为单例。

    <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
    
      <bean id="securityManager" 
        class="com.example.util.SecurityManager" scope="singleton" />
    
    </beans>