如何获取和设置 networkaddress.cache.ttl 的值

How to get and set the value of networkaddress.cache.ttl

我在 alpine 容器中有一个 java 应用程序 运行。我想找到一种可靠的方法来确定 networkaddress.cache.ttl 的值是多少。我试图在应用程序的代码中使用它:java.security.Security.getProperty("networkaddress.cache.ttl"); 但它总是 returns null,即使我在 JAVA_OPTS 参数中使用 -Dnetworkaddress.cache.ttl=30 也是如此。所以我显然做错了什么,但我不知道是什么。根据这个 我什至不需要在 JAVA_OPTS 中添加参数,因为无论如何默认值都是 30。查看容器内的 /usr/local/openjdk-8/jre/lib/security/java.security 我可以看到 #networkaddress.cache.ttl=-1 但它被注释掉了,所以我不知道默认值是什么。那么我怎样才能可靠地检查 networkaddress.cache.ttl 的值是多少?

由于我不知道的原因 -Dnetworkaddress.cache.ttl=30 未能设置任何内容。我设法通过将其添加到我的 Dockerfile

来设置它
sed -i '313,313 s/^#//' /usr/lib/jvm/zulu8-ca/jre/lib/security/java.security
sed -i '313,313 s/-1/30/' /usr/lib/jvm/zulu8-ca/jre/lib/security/java.security

描述了另一种实现方法 here。这个想法是使用另一个文件来覆盖安全性 属性。 这两种方法对我来说都很好。