Необходимость перезапуска tomcat при внесении изменений - PullRequest
23 голосов
/ 07 декабря 2010

Есть ли способ обходить tomcat каждый раз, когда в java-код вносятся небольшие изменения?

Ответы [ 8 ]

35 голосов
/ 07 декабря 2010

Установить reloadable атрибут <Context> элемента в context.xml до true.

<Context reloadable="true">

Затем Tomcat будет отслеживать изменения в /WEB-INF/classes и /WEB-INF/lib и перезагружать при необходимости.

Если вы используете IDE, это также настраивается как настройка сервера. Вот как это выглядит в Eclipse:

alt text

6 голосов
/ 07 декабря 2010

Выезд Jrebel . Он обнаруживает изменения кода, автоматически компилирует и развертывает войну, не перезагружая сервер. Это экономит много времени и повышает производительность.

4 голосов
/ 07 декабря 2010

Если вам нужно изменить классы без перезапуска, рассмотрите Dynamic Code Evolution VM в дополнение к ответу BalusC, чтобы избежать ошибок permgen, для разработки.

3 голосов
/ 08 декабря 2010

Даже если Tomcat обычно очень быстро запускается, это очень сильно зависит от вашего приложения, от того, насколько быстро оно может инициализироваться. Если существует чертовски большой контекст приложения Spring со всеми видами интеграции и отображениями Hibernate, я был бы совершенно уверен, что для загрузки Tomcat потребуется 1,5 секунды, а для запуска приложения - 1,5 минуты. JRebel действительно может помочь здесь.

2 голосов
/ 07 декабря 2010

Вам не нужно перезапускать Tomcat, просто переустановите приложение.Есть разные способы сделать это (google "tomcat deploy", и вы получите много указателей), но самый простой - скопировать только что созданный файл войны в каталог веб-приложений Tomcat.Tomcat автоматически определит, когда файл обновляется, и перезапустит приложение.

1 голос
/ 04 февраля 2012

Вы также можете попробовать DCEVM.Я написал инструкции по настройке с помощью tomcat + eclipse: Spring-mvc + Velocity + DCEVM

0 голосов
/ 06 мая 2016

Я использовал агент JVM Spring Loaded , чтобы избежать перезапуска Tomcat или перезагрузки приложения (что может занять некоторое время для веб-приложений Spring).Я настраиваю свой сервер Tomcat в Eclipse вместе с «Автоматически публиковать при изменении ресурсов», чтобы изменения вступили в силу практически сразу.

Если вы используете Eclipse с интегрированной Tomcat (WTP), вы можете увидеть шаги, которые я предпринял здесь: https://stackoverflow.com/a/37064672/1034436

0 голосов
/ 07 декабря 2010

Да.Вы можете настроить tomcat на автоматическое развертывание, и оно автоматически примет изменения.Это все еще перераспределяет, но это намного быстрее.Просто добавьте "autodeploy =" true "" к вашей записи Host в файле конфигурации server.xml.

Это то, что мы делаем там, где я работаю.Когда приходит время обновить одно из наших приложений, мы просто помещаем новый WAR-файл поверх старого, а Tomcat распаковывает и развертывает его автоматически.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...