Java 什么';建议在Elastic Beanstalk中设置networkaddress.cache.ttl的方法是什么?

Java 什么';建议在Elastic Beanstalk中设置networkaddress.cache.ttl的方法是什么?,java,tomcat,amazon-elastic-beanstalk,tomcat8,Java,Tomcat,Amazon Elastic Beanstalk,Tomcat8,我需要为运行在Tomcat 8中的Amazon Elastic Beanstalk应用程序设置Java的DNS缓存TTL(networkaddress.cache.TTL)。因为EB可以随时启动和停止服务器实例,所以我不能简单地编辑Tomcat配置文件和服务器,并期望更改持续 我尝试设置networkaddress.cache.ttl和sun.net.inetaddr.ttl环境变量,但这些都没有效果。Amazon说调用java.security.security.setProperty(“ne

我需要为运行在Tomcat 8中的Amazon Elastic Beanstalk应用程序设置Java的DNS缓存TTL(networkaddress.cache.TTL)。因为EB可以随时启动和停止服务器实例,所以我不能简单地编辑Tomcat配置文件和服务器,并期望更改持续


我尝试设置networkaddress.cache.ttl和sun.net.inetaddr.ttl环境变量,但这些都没有效果。Amazon说调用
java.security.security.setProperty(“networkaddress.cache.ttl”,“60”)“如果在Tomcat内部运行应用程序将无法工作”()。设置TTL的好方法是什么?

问题是我做错了。设置sun.net.inetaddr.ttl环境变量有效。您可以在配置文件中执行此操作:

option_settings:
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: sun.net.inetaddr.ttl
      value: 60
60秒是数值

另一个对我来说更好的选择是创建并使用java.security文件:

option_settings:
    - namespace: aws:elasticbeanstalk:application:environment
      option_name: java.security.properties
      value: /etc/myapp/java.security
container_commands:
    00create_config_dir:
        command: 'mkdir -p /etc/myapp'
        ignoreErrors: true
    01create_java_security_file:
        command: 'echo "networkaddress.cache.ttl=60" > /etc/myapp/java.security'
        ignoreErrors: true

如果您使用的是spring framework,下面是我在应用程序初始化时设置
networkaddress.cache.ttl
的步骤

  • 定义一个新的Java类,如下所示

    package com.example.util;
    public class SecurityManager {
      public SecurityManager() {
        java.security.Security.setProperty("networkaddress.cache.ttl", "60");
      }
    }
    
  • 在创建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>
    
    
    

  • 您知道在Elastic BeanStalk上运行Java8的默认值是多少吗?我似乎找不到它@monish001i创建了一个@Configuration类来设置这些属性,但是从日志中可以看出hikaripol-1-Start已完成。在设置属性之前启动。那会是个问题吗?这算是与数据库的交互吗?