如何在运行时更改 Java 属性?

2022-09-03 07:39:34

问题:有没有办法“连接”到正在运行的JVM并更改系统属性(由-Dproperty=value给出),而无需停止JVM并且无需编程?

现在,上下文:我有一个JBoss服务器在远程机器上运行,它托管我的应用程序,但也托管其他应用程序。这些其他应用程序可能无法停止。使用仅与我的应用程序相关的特定 -D 属性调用服务器。此属性在服务器启动时被分配了错误的值。我需要更改该属性。最简单的方法是重新启动JBoss,但这会导致所有应用程序关闭一段时间。有没有办法在不停止除我自己的应用程序之外的任何应用程序的情况下更改该属性?

谢谢!


答案 1

在我的一个代码中找到的示例:

System.setProperty("javax.net.ssl.trustStore", keystore_file); 

您可以运行它以响应“重新配置”查询(添加到服务器代码中)。reconfigure()


答案 2

许多系统属性仅在启动时检查,因此更改它们并不总是有帮助。

我建议您在应用程序中添加支持,以通过请求执行更改,以便您的应用程序知道它已发生并相应地处理它。