更新屬性文件後,服務器是否有任何方式可以識別更改而無需重新啓動?因爲它在第二次重新啓動後導致Java.lang.OutOfMemoryError:PermGen空間。在不重新啓動Tomcat的情況下識別屬性文件更改
屬性文件位於Web-Inf文件夾下。
乾杯......
更新屬性文件後,服務器是否有任何方式可以識別更改而無需重新啓動?因爲它在第二次重新啓動後導致Java.lang.OutOfMemoryError:PermGen空間。在不重新啓動Tomcat的情況下識別屬性文件更改
屬性文件位於Web-Inf文件夾下。
乾杯......
沒有直接的辦法!
Tomcat Webapp類加載器緩存已加載的所有資源。除非重新啓動上下文,否則更改將不可見。沒有API清除緩存。你所能做的就是通過反射訪問該地圖並調用清除方法。所有資源將根據請求從磁盤重新讀取。 清除this HashMap和你完成了!由於您擁有自定義類加載器,所以文件監視器將無法真正幫助您。
如果你在JDK 7,您可以watch the file system for changes並在必要時重新加載該文件。
如果您還沒有使用JDK 7,那麼我會建議使用File Monitor like this來監視對屬性文件所做的更改,以及何時更改只是將屬性文件重新讀入Properties
對象。
看看Tomcat上下文/ WatchedResources。
<Context reloadable="true"> <WatchedResource>path/to/watched/resource</WatchedResource> </Context>