Как обновить веб-приложение Tomcat, не перезапуская весь сервис?
Я новичок в Tomcat
, У нас есть разработчик с 5 запущенными приложениями. Несмотря на то, что он dev, он довольно сильно используется нашими клиентами во время тестирования.
Скажем, нам нужно внести одно небольшое изменение в один файл класса. Прямо сейчас нам нужно отключить Tomcat (влияет на остальные четыре приложения), удалить WAR
файл (и каталог веб-приложения), повторно разверните новый WAR
файл и перезапустить Tomcat
,
Конечно, это расстраивает нескольких человек, потому что он уничтожает все зарегистрированные сеансы для всех приложений.
Есть лучший способ сделать это? Я имею в виду, есть ли способ перезагрузить только КЛАСС, который изменился, а не все на компьютере разработчика?
Благодарю.
4 ответа
Вы пытались использовать приложение Tomcat's Manager? Это позволяет вам развернуть / развернуть военные файлы без выключения Tomcat.
Если вы не хотите использовать приложение Manager, вы также можете удалить файл war из каталога webapps, Tomcat отключит приложение через короткий промежуток времени. Затем вы можете скопировать файл войны обратно в каталог, и Tomcat развернет файл войны.
Если вы работаете с Tomcat в Windows, вам может потребоваться настроить контекст, чтобы не блокировать различные файлы.
Если у вас просто нет простоев, вы можете посмотреть на параллельное развертывание Tomcat 7. Вы можете одновременно развернуть несколько версий веб-приложения с одним и тем же контекстным путем. Правила, используемые для сопоставления запросов с контекстной версией, следующие:
- Если в запросе нет информации о сеансе, используйте последнюю версию.
- Если информация о сеансе присутствует в запросе, проверьте менеджер сеанса каждой версии на предмет соответствия сеанса и, если он найден, используйте эту версию.
- Если информация о сеансе присутствует в запросе, но не найдено соответствующего сеанса, используйте последнюю версию.
Есть несколько простых способов.
Просто коснитесь web.xml любого веб-приложения.
touch /usr/share/tomcat/webapps/<WEBAPP-NAME>/WEB-INF/web.xml
Вы также можете обновить определенный файл JAR в WEB-INF/lib, а затем коснуться web.xml, вместо того чтобы создавать весь файл war и развертывать его снова.
Удалите каталог webapps/YOUR_WEB_APP, Tomcat начнет развертывание war в течение 5 секунд (при условии, что ваш файл war еще существует в папке webapps).
Обычно перезаписываемый файл войны новой версией автоматически перераспределяется tomcat. Если нет, вы можете коснуться web.xml, как описано выше.
Скопируйте уже разорванный "каталог" в папку веб-приложений.
В каталоге conf Apache Tomcat вы можете найти файл context.xml. В этом редактируйте тег как < Context reloadable = "true">. это должно решить проблему, и вам не нужно перезагружать сервер
Для развития....