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

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

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

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

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

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


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

RTFM Tomcat Parallel Deployment

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

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

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

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


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