Как обновить веб-приложение Tomcat без перезапуска всей службы?

Я новичок в Tomcat. У нас есть dev-машина с 5 приложениями. Несмотря на то, что это dev, он очень часто использовался нашими клиентами во время тестирования.

Итак, скажем, нам нужно внести небольшое изменение в один файл класса. Прямо сейчас, мы должны закрыть Tomcat (затрагивая остальные четыре приложения), удалить файл WAR (и каталог веб-приложения), повторно развернуть новый файл WAR и перезагрузить Tomcat.

Конечно, это расстраивает несколько человек, потому что оно уничтожает все зарегистрированные сеансы для всех приложений.

Есть ли лучший способ сделать это? Я имею в виду, есть ли способ перезагрузить CLASS, который изменился вместо всего на машине dev?

Спасибо.

Ответ 1

Вы пытались использовать приложение Tomcat Manager? Это позволяет вам разворачивать/разворачивать военные файлы, не закрывая Tomcat.

Если вы не хотите использовать приложение "Менеджер", вы также можете удалить военный файл из каталога webapps, Tomcat незамедлительно удалит приложение. Затем вы можете скопировать военный файл обратно в каталог, а Tomcat развернет файл войны.

Если вы используете Tomcat в Windows, вам может потребоваться настроить свой Контекст, чтобы не блокировать различные файлы.

Если у вас абсолютно нет времени простоя, вы можете посмотреть Tomcat 7 Параллельные развертывания Вы можете развернуть несколько версий веб-сайта приложение с одним и тем же контентом в то же время. Правила, используемые для сопоставления запросов к версии контекста, следующие:

  • Если в запросе нет информации о сеансе, используйте последнюю версию.
  • Если в запросе присутствует информация о сеансе, проверьте диспетчер сеанса каждой версии для соответствующего сеанса, и если она найдена, используйте эту версию.
  • Если информация о сеансе присутствует в запросе, но соответствующий сеанс не найден, используйте последнюю версию.

Ответ 2

В conf-каталоге apache tomcat вы можете найти файл context.xml. В этом теге редактирования как < Context reloadable = "true" > . это должно решить проблему, и вам не нужно перезапускать сервер

Ответ 3

Существует несколько простых способов.

  • Просто коснитесь web.xml любого webapp.

    touch /usr/share/tomcat/webapps/<WEBAPP-NAME>/WEB-INF/web.xml
    

Вы также можете обновить конкретный файл jar в WEB-INF/lib, а затем коснуться web.xml, а не создавать весь файл войны и снова его развертывать.

  1. Удалите каталог webapps/YOUR_WEB_APP, Tomcat начнет развертывание войны в течение 5 секунд (если ваш файл войны все еще существует в папке webapps).

  2. Вообще перезаписывающий военный файл с новой версией автоматически переводится tomcat. Если нет, вы можете коснуться web.xml, как описано выше.

  3. Скопировать через уже взорванный "каталог" в папку вашего веб-порта.