Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Настройка Tomcat для автоматической загрузки


Автор: vns955 4.11.2009, 02:15
Всем здрям!

Подскажите плз как настроить Tomcat, чтоб при записи в папку WEB-INF\classes обновленных .class файлов он сразу же их перезагружал без необходимости перезагрузки самого Tomcat.

Заранее благодарен.

Автор: garbuz 4.11.2009, 02:42
А разве из коробки не работает? Помнится так делал однажды, только не на томкате.

Автор: COVD 4.11.2009, 14:27
Перезагружать отдельные классы в работающем приложении весьма рискованное дело. Томкат успешно справляется с перезагрузкой приложения целиком. Удаляете war из webapps - Томкат выполняет undeploy. Потом кладете новый war - Томкат выполняет autodeploy. В установках Томката по умолчанию autodeploy=true.    

Автор: vns955 4.11.2009, 15:02
Я не работаю с war. Я раскидываю всё по соответствующим папкам и всё. Хорошо, если это рискованное дело, то я готов переписать всю папку classes. Будет ли в этом случае их Tomcat подхватывать? Что для этого нужно?

Автор: COVD 4.11.2009, 16:30
Цитата

Я не работаю с war.

Так начните работать. Это общепринятая практика. Любой IDE создает war автоматически при компиляции проекта.

Цитата

я готов переписать всю папку classes. Будет ли в этом случае их Tomcat подхватывать?

Думаю (и надеюсь), что нет. Томкат периодически сканирует директорию. Когда он обнаруживает, что исчез или появился один файл war, то тут относительно просто определить, что приложение следует удалить или запустить. Когда же обновляются много классов (последовательно во времени), это сложнее. 

В составе Томката есть веб-приложение - менеджер. Там, если не ошибаюсь, есть возможность сделать deploy-undeploy приложения вручную. Копируете обновленные классы и жмете кнопку в менеджере.

Автор: vns955 4.11.2009, 17:04
Цитата

Так начните работать. Это общепринятая практика. Любой IDE создает war автоматически при компиляции проекта.

Насчет NetBeans - да, насчет Eclipse с которым я работаю - нет пока, - он war не генерит либо я что-то не так настроил либо плагина нет (Eclipse 3.5 SDK Galileo).

Цитата

В составе Томката есть веб-приложение - менеджер. Там, если не ошибаюсь, есть возможность сделать deploy-undeploy приложения вручную. Копируете обновленные классы и жмете кнопку в менеджере.

А вот это уже интересней. И он позволяет так заливать отдельные class файлы?

Автор: ming 4.11.2009, 20:11
Цитата(vns955 @ 4.11.2009,  20:04)
Насчет NetBeans - да, насчет Eclipse с которым я работаю - нет пока, - он war не генерит либо я что-то не так настроил либо плагина нет (Eclipse 3.5 SDK Galileo).

поставьте Eclipse Ganymede, там есть WTP для работы с Web-приложениями.

Автор: vns955 10.11.2009, 16:13
Цитата(COVD @ 4.11.2009,  14:27)
Перезагружать отдельные классы в работающем приложении весьма рискованное дело. 

Я научился перегружать отдельные классы через restart приложения через manager. Мне сказали и сам увидел что это намного быстрее чем работа через war-файлы. Разве такая работа небезопасная?

Автор: COVD 10.11.2009, 19:29
Цитата

Я научился перегружать отдельные классы через restart приложения через manager. Мне сказали и сам увидел что это намного быстрее чем работа через war-файлы. Разве такая работа небезопасная?


Если вы делаете рестарт приложения (не Томката), то перегружаете приложение, а не отдельные классы. Конечно тут все замечательно.

Из общих соображений ясно, что поменять класс на ходу безопасно, если обьекты старой версии уже не используются приложением. Например, обьект каждый раз создается, выполняет свою задачу в отдельном потоке и выбрасывается. Сервлеты же создаются в одном экземпляре и обслуживают все запросы. Ясно, что и в этом случае механизм отлажен - мы же можем успешно редактировать jsp "на лету". Однако в общем случае если в приложении есть какие-то классы другого назначения, то есть опасение.    

Автор: Juggernaut 12.11.2009, 10:56
Скорее всего имеется в виду т.н. On the fly class reloading

Т.е. отсутствие необходимости ждать перезапуска всего приложения на AppServer в случае внесения изменений в один класс.

Я одно время изучал данный вопрос, но одна IDE или AppServer из коробки такую функцию не поддерживает.

Есть сторонние продукты, например я использовал JavaRebel, но все они платные. 

Автор: vns955 12.11.2009, 17:07
to Juggernaut

Цитата

Я одно время изучал данный вопрос, но одна IDE или AppServer из коробки такую функцию не поддерживает.

"Из коробки" - имеется ввиду работа с war?

Цитата

Есть сторонние продукты, например я использовал JavaRebel, но все они платные. 

А крак где-нибудь есть?

Автор: vns955 13.11.2009, 14:23
COVD

Цитата

Ясно, что и в этом случае механизм отлажен - мы же можем успешно редактировать jsp "на лету".

Незнаю, у меня не получается "на лету". Только с релоадингом приложения.

Автор: Egik2 21.11.2009, 00:58
ECLIPSE все поддерживает. нажимаешь правой кнопкой на проект, export и выбираешь war

Автор: vns955 23.11.2009, 15:13
Egik2

А где там war выбирать?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)