Recognizing properties file changes without restarting Tomcat

后端 未结 4 658
温柔的废话
温柔的废话 2020-12-19 01:47

Is there any way for the server to recognize the changes without restarting after a properties file updated? Because it causes Java.lang.OutOfMemoryError: PermGen space afte

相关标签:
4条回答
  • 2020-12-19 01:57

    If you're on JDK 7, you can watch the file system for changes and reload the file when necessary.

    0 讨论(0)
  • 2020-12-19 02:03

    If you're not yet using JDK 7 then I would suggest using a File Monitor like this to monitor changes to your property file and when it changes just rel-read the property file into your Properties object.

    0 讨论(0)
  • 2020-12-19 02:05

    Take a look at Tomcat Context/WatchedResources.

    <Context reloadable="true"> <WatchedResource>path/to/watched/resource</WatchedResource> </Context>

    http://www.mulesoft.com/tomcat-reload#context

    0 讨论(0)
  • 2020-12-19 02:22

    There is no direct way!

    The Tomcat Webapp Classloader caches every resource which has been loaded by it. A change won't be visible unless you restart the context. There is no API clearing that cache. All you can do is access that map via reflection and call the clear method. All resources will be re-read from disk on request. Clear this HashMap and your are done! The file monitor won't really help since you have a custom classloader.

    0 讨论(0)
提交回复
热议问题