Распознавание изменений файла свойств без перезапуска Tomcat - PullRequest
9 голосов
/ 27 декабря 2011

Может ли сервер распознать изменения без перезапуска после обновления файла свойств?Поскольку он вызывает Java.lang.OutOfMemoryError: пространство PermGen после второго перезапуска.

Файл свойств находится в папке Web-Inf.

Cheers ...

Ответы [ 4 ]

8 голосов
/ 28 декабря 2011

Прямого пути нет!

Tomcat Webapp Classloader кэширует каждый ресурс, который был загружен им. Изменение не будет видно, пока вы не перезапустите контекст. Нет API, очищающего этот кеш. Все, что вы можете сделать, это получить доступ к этой карте с помощью отражения и вызвать метод clear. Все ресурсы будут перечитаны с диска по запросу. Очистите этот HashMap и все готово! Монитор файлов действительно не поможет, так как у вас есть собственный загрузчик классов.

3 голосов
/ 03 августа 2012

Взгляните на Tomcat Context / WatchedResources.

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

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

2 голосов
/ 27 декабря 2011

Если вы используете JDK 7, вы можете наблюдать за изменениями в файловой системе и при необходимости перезагружать файл.

1 голос
/ 27 декабря 2011

Если вы еще не используете JDK 7, то я бы предложил использовать File Monitor, подобный этому , чтобы отслеживать изменения в вашем файле свойств, а когда он меняется, просто перечитайте файл свойств в свой * 1003.* объект.

...