How to change Java properties at runtime?

谁说我不能喝 提交于 2019-12-09 05:15:02

问题


The question: Is there some way to "connect" to a running JVM and change system properties (given by -Dproperty=value) without stopping the JVM and without having programmed a way of doing it?

Now, the context: I have a JBoss server running on a remote machine, which is hosting my application, but also other applications. Those other apps may not be stopped. The server is invoked with a specific -D property that is relevant to my application only. This property was assigned the wrong value at server startup. I need to change that property. The easiest way would be to restart JBoss, but that would cause all apps to go down for some time. Is there a way of changing that property without stopping any applications but my own?

Thank you!


回答1:


Example found in one of my code:

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

You can run it in response for "reconfigure" query (add reconfigure() to your server code).




回答2:


Many system properties are only examined on start up so changing them doesn't always help.

I suggest you add support within your application to perform the change via a request so your application will know that it has happened and handle it accordingly.




回答3:


As others have already suggested, probably can't change the system property value used by your application. One option might be restarting your application. It seems that Jboss offers JMX enabled stop/start ability for web applications which you can read here though I haven't actually tried it out.




回答4:


Not a long-term solution, but you could connect a debugger and hot-swap some code that returns the property value you want instead of looking up the property. This requires that you enabled remote debugging when you started JBoss though.




回答5:


you can do it using System.setProperty() method. for example: System.setProperty(key, value);



来源:https://stackoverflow.com/questions/4469774/how-to-change-java-properties-at-runtime

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!