powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / замена класса не перезагружая томкат
21 сообщений из 21, страница 1 из 1
замена класса не перезагружая томкат
    #38805697
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А возможно ли как то заменять на tomcat заменять классы и сервлеты не перезагружая томкат,
не используя IDEA замена происходит через git
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805707
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На время отладки не пакуем приложение в jar, а размещаем структуру каталогов в WEB-INF/classes. Это упрощает замену отдельных классов.
Перегрузка приложения происходит если обновить дату-время web.xml или описатель контекста приложения.
Tomcat при этом не перегружается, только само приложение.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805756
xPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Basil A. Sidorov,
А состояние памяти таким же останется? К примеру, значения статических полей.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805763
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xProBasil A. Sidorov,
А состояние памяти таким же останется? К примеру, значения статических полей.
Нет, конечно. Томкат делает полный редеплой модуля. Значения можно перенести только через HttpSession.
Другие контейнеры умеют менять классы, без редеплоя модуля. Но я не знаю способен ли Томкат на такое. И сомневаюсь что статические поля переживают такую замену.

Всегда можно купить JRebel. Он, вроде, готов и для использования в продакшне.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805774
smackmychi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, а parallel deployment не поможет?
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805788
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smackmychiBlazkowicz, а parallel deployment не поможет?
Чему поможет? Там тоже перенос всех данных через HttpSession. Эта фича помогает обновлять приложение без остановки. Но перенос состояния между модулями через статику или ещё как она не реализует.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805792
xPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Очень странно, я вот когда под меняю что-то в методе класса (без изменения сигнатуры методов), то при компиляции мне idea говорит - n классов успешно перезагружены (при этом используется tomcat). Изменения вступают в силу, при этом состояния памяти тоже сохраняется.
Но если меняется сигнатура, то классы не обновяться.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805805
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xProОчень странно, я вот когда под меняю что-то в методе класса (без изменения сигнатуры методов), то при компиляции мне idea говорит - n классов успешно перезагружены (при этом используется tomcat). Изменения вступают в силу, при этом состояния памяти тоже сохраняется.
Но если меняется сигнатура, то классы не обновяться.

Это фича JPDA, называется Hotswap. Используется при отладке. Елдос же внятно указал что обновлять нужно без IDE.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805819
xPro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Я просто интересуюсь, чтобы понять как это работает.
А чем отличается замена *.class файлов и обновления web.xml от кнопки reload у корня сайта в manager tomcat'a ?
У меня часто бывает, что при обновлении через кнопку reload tomcat через некоторое время загружает процессор на полную и перестаёт отвечать на запросы, приходиться перезапускать.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805842
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xProЯ просто интересуюсь, чтобы понять как это работает.
Задавайте конкретные вопросы.

xProА чем отличается замена *.class файлов и обновления web.xml от кнопки reload у корня сайта в manager tomcat'a ?
Для Tomcat - ничем. Замену *.class он может сразу и не обнаружит. А вот web.xml обнаруживает сразу и редеплоит модуль, если autoDeploy=true.
- Возможно в последних версиях и появилась функциональность обновлять только классы. Не уверен.
- Надо смотреть доки, возможны дополнительные настройки по этому вопросу. Помню в JBoss был довольно гибкий механизм. Можно было указать какие именно файлы проверять на замену и как часто.


xProУ меня часто бывает, что при обновлении через кнопку reload tomcat через некоторое время загружает процессор на полную и перестаёт отвечать на запросы, приходиться перезапускать.
Пермген утекает, наверное. Надо логи читать.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805957
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНа время отладки не пакуем приложение в jar, а размещаем структуру каталогов в WEB-INF/classes. Это упрощает замену отдельных классов.
Перегрузка приложения происходит если обновить дату-время web.xml или описатель контекста приложения.
Tomcat при этом не перегружается, только само приложение.
у меня работает томкат и перезагрузка приложения совсем не желательна, или оно как то отличается от перезагрузки томката?
и если мне приходится менять класс, тогда мне приходится давать ему другое имя?
что за дата время в web.xml
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38805960
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосу меня работает томкат и перезагрузка приложения совсем не желательна, или оно как то отличается от перезагрузки томката?

RTFM Tomcat Parallel Deployment

Елдоси если мне приходится менять класс, тогда мне приходится давать ему другое имя?
То что?

Елдосчто за дата время в web.xml
У файлов в файловой системе существуют атрибуты. Время создания. Время последней модификации и т.п.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38806003
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосу меня работает томкат и перезагрузка приложения совсем не желательна, или оно как то отличается от перезагрузки томката?Короткий квалифицированный ответ - да, отличается.
Сервлет-контейнер, например, поднимает коннекторы, настраивает realm-ы и т.п. Далее контейнер развёртывает одно или несколько приложений.
Если развёрнуто несколько приложений, а перегружается только одно, работа остальных приложений никак не затрагивается.
И, в любом случае, перегрузка приложений не затрагивает, грубо говоря, то, что было инициализировано в server.xml.
Параллельное развёртывание позволяет "дообслужить" текущие запросы на старой версии приложения, одновременно принимая новые запросы в новой. Это минимизирует заметность обновления.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38806019
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдоси если мне приходится менять класс, тогда мне приходится давать ему другое имя?Нет, конечно.
Сначала контейнер выгрузит приложение, затем загрузит заново, честно прочитав данные из каталога приложения.
Разумеется, возможны оптимизации, исключающие перечитывание с диска файлов, если содержащиеся в них классы не менялись, но я не разбирался делается ли такая оптимизация в реальной жизни.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38806192
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕлдоси если мне приходится менять класс, тогда мне приходится давать ему другое имя?Нет, конечно.
Сначала контейнер выгрузит приложение, затем загрузит заново, честно прочитав данные из каталога приложения.
Разумеется, возможны оптимизации, исключающие перечитывание с диска файлов, если содержащиеся в них классы не менялись, но я не разбирался делается ли такая оптимизация в реальной жизни.
я хотел поставить восклицательный знак, имел ввиду что сейчас я делаю так,
чтобы без перезагрузки воткнуть класс я даю ему другое имя.
а можно ли как то без перезагрузки приложения?
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38806204
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосчтобы без перезагрузки воткнуть класс я даю ему другое имя.
а можно ли как то без перезагрузки приложения?JRebel уже упоминали. Сам я его даже не смотрел, но дело не в этом ...
Я до сих пор не могу понять трагизма перезагрузки приложения. Цель какая? Пойти на принцип?
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38806371
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЕлдосчтобы без перезагрузки воткнуть класс я даю ему другое имя.
а можно ли как то без перезагрузки приложения?JRebel уже упоминали. Сам я его даже не смотрел, но дело не в этом ...
Я до сих пор не могу понять трагизма перезагрузки приложения. Цель какая? Пойти на принцип?
нет это очень критично, как бы даже на секунду нельзя остановить, систему
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38806375
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдоснет это очень критично, как бы даже на секунду нельзя остановить, систему
RTFM Tomcat Parallel Deployment
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38807813
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕлдоснет это очень критично, как бы даже на секунду нельзя остановить, систему
RTFM Tomcat Parallel Deployment
не нашел внятной информации по этой теме,
могли бы ли вы объяснить.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38807865
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елдосне нашел внятной информации по этой теме,
могли бы ли вы объяснить.
Словарь в зубы и вперёд.
http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Parallel_deployment

Не нужно останавливать старую версию war-модуля при установке новой. Новая ставиться параллельно и обслуживает всех новых клиентов. Старая версия обслуживает старых клиентов. Через некоторое время "старые" клиенты заканчиваются и тогда можно старую версию модуля удалить.
...
Рейтинг: 0 / 0
замена класса не перезагружая томкат
    #38807870
Елдос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЕлдосне нашел внятной информации по этой теме,
могли бы ли вы объяснить.
Словарь в зубы и вперёд.
http://tomcat.apache.org/tomcat-7.0-doc/config/context.html#Parallel_deployment

Не нужно останавливать старую версию war-модуля при установке новой. Новая ставиться параллельно и обслуживает всех новых клиентов. Старая версия обслуживает старых клиентов. Через некоторое время "старые" клиенты заканчиваются и тогда можно старую версию модуля удалить.
Большое спасибо я понял вас
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / замена класса не перезагружая томкат
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]