Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Recognizing properties file changes without restarting Tomcat

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 after the second restart.

The properties file is under Web-Inf folder.

Cheers...

like image 919
Pinchy Avatar asked Dec 27 '11 09:12

Pinchy


3 Answers

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.

like image 195
Michael-O Avatar answered Oct 20 '22 07:10

Michael-O


Take a look at Tomcat Context/WatchedResources.

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

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

like image 3
ricosrealm Avatar answered Oct 20 '22 06:10

ricosrealm


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

like image 2
mindas Avatar answered Oct 20 '22 06:10

mindas