Можно ли выполнить горячую замену одного класса вручную с помощью Tomcat?

Можно ли перезагрузить отдельный класс вручную с помощью Tomcat 8 без перезагрузки сервера? Это для производственной среды, о которой я говорю, поэтому я не хочу использовать reloadable атрибут для достижения этого. У меня просто иногда может быть обновление для одного класса (или пары классов), которые я хотел бы, чтобы tomcat распознал.

Поскольку это возможно сделать с reloadable атрибут или настройка отслеживаемых ресурсов, я надеялся, что можно также каким-то образом запускать вручную.

2 ответа

Если вы замените файл класса и Tomcat уже загрузит этот класс, вам нужно будет запустить повторное развертывание веб-приложения для получения обновленного класса. Самый простой способ вызвать это - прикоснуться к файлу context.xml веб-приложения. Если его нет, есть и другие варианты. См. Этот список в документах Tomcat: http://tomcat.apache.org/tomcat-8.0-doc/config/automatic-deployment.html.

В конце концов я решил пойти с менеджером Tomcat. Я используюmanager-script функциональность менеджера (GUI и т. д. отключена), и я ограничиваю доступ только к localhost. Я обернул команду перезагрузки в небольшой скрипт оболочки, например так:

#!/bin/bash
echo Reloading application now...
curl http://my-user:my-password@localhost:8080/manager/text/reload?path=/
echo Done.

Это перезагружает весь веб-приложение, которое, я думаю, хорошо для меня.

Другие вопросы по тегам