|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
Вопрос: можно ли заменять файлы *.class которые используются некоторыми JSP-страничками при РАБОТАЮЩЕМ Томкэте? Короче, я заменяю, но все изменения вступают в силу только при рестарте Томкэта, т.е. приходится остановить его и запустить снова. Допустим файлы стилей *.css, или javascript при РАБОТАЮЩЕМ Томкэте можно заменять и все изменения работают сразу. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 10:21 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
Кроме того без перезагрузки сервера можно менять файлы *.jsp ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 10:47 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
to Delphi_User в тэге <context> (файл server.xml) есть атрибут reloadable. ему прописывается значение true. тогда томкэт периодичсеки проверяет подкаталоги WEB-INF/classes и WEB-INF/lib на новые версии классов/библиотек. скорость томкэта снижается при этом. т.е. на рабочем приложении не рекомендую. .: 6.000.000 ways to die :. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 11:09 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
вот добавил reloadable="true" в server.xml <!-- Tomcat Root Context --> <!-- <Context path="" docBase="ROOT" debug="0" reloadable="true"/> --> НО... эффекта пока не наблюдается... может надо подольше подождать пока томкэт все таки увидит что файлы *.class были изменены но тогда кто мне подскажет через какой интервал времени сервер смотрит это ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 11:52 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
ну это в документации сказано ,что обновляется. там же сказано и про тормоза системы. я сейчас проверил - не работает тоже. .: 6.000.000 ways to die :. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 13:08 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
Короче это просто надо для того что бы можно было менять файлы *.class по FTP, не останавливая сервера. А так прийдется наверное ставить что то типа VNC, только для того что бы остановить и обратно запустить томкэт. А это не желательно. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 13:31 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
Где то на буржуйском форуме тоже было. Советовали добавить в <Context ... <Loader checkInterval="3"/> <Logger className="org.apache.catalina.logger.SystemOutLogger" timestamp="true"/> по умолчанию там кажется 15 стоит Только мне это тоже не помогло :)) Может все зависит от версии томката?! У меня 4.1.27 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 17:30 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
Последняя версия Tomkat - 5.0.24. И после изменения файлов у меня поисходит автоматический перезапуск соответствующего приложения - одного из тех, которые указаны в %TOMKAT_HOME%/conf/Catalina/localhost. И это как-то сразу после установки получилось, ничего особенно не настраивал. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 17:50 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
а на 4-ом ( 4.1.27) Tomcat-e у кого-нибудь получается? там еще на буржуйских сайтах рекомендуют в server.xml вот так написать <DefaultContext reloadable="true"/> Но автоматический reload не выходит, после замены файла пишет что класс не найден, лечится перезапуском ( такое чувство что что-то всетаки делается, но не доконца ) P.S. пошарился еще на relib.com здесь напр. пришли к выводу что перезапускать надо И еще подскажите по поводу ТОМКАТА а здесь вроде у кого то получилось Перезапуск сервлетов в Tomcat 4... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.05.2004, 18:30 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
В jvm нет возможности выгружать/обновлять классы. Так что перезапуск обязателен. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 10:02 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
а причем тут jvm? вот application server 8 от sun вполне успешно релуд делает. .: 6.000.000 ways to die :. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 11:31 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
Возможно это будет шагом к решению проблемы ... При установке Tomcat-а был создан Examples Context, туда ( в \webapps\examples\WEB-INF\classes ) кинул свой класс сервлета HelloUser.class В файле server.xml Context прописан уже как reloadable true, поскольку это было настроено при установке автоматич., оно дает право несомневаться в правильности настроек. Ну, сервлет работает, ладно Заходим на административную страничку http://localhost:8080/manager/html/list делаем Reload приложения examples , получаем ответ OK - Reloaded application at context path /examples снова вызываем сервлет http://localhost:8080/examples/servlet/HelloUser и This application is not currently available причем на адм. страничке и start не прокатывает Почему? А вообще-то, как альтернатива, можно подменять классы или war без перезапуска Tomcat, только нужно сначала делать stop приложению. Если делать не через адм. страничку, можно командами через браузер . Приведу пример для замещения упакованного в war приложения HelloUser 1. Стопорим работающее приложение http://localhost:8080/manager/stop?path=/HelloUser 2. Удаляем его http://localhost:8080/manager/remove?path=/HelloUser при этом удаляется дириктория ./webapps/HelloUser и лежащий в webapps файл HelloUser.war 3. закидываем в webapps новый war ( допустим по ftp ) 4. Инсталлим http://localhost:8080/manager/install?path=/HelloUser&war=HelloUser.war Изменения вступили в силу, причем без перезапуска Tomcat! ( а с классом это еще проще ... ) Вроде как нормально, но по инфе из разных источников ,я так понял, можно сделать так, что никаких stop/start не надо, загнал новый war в webapps вместо старого и типа само все сделалось. Но пока так неполучается, даже с подменой просто класса неполучается - при прописывании reloadable и всего как советуют приводит лишь к ошибке что выделена жирным цветом ( см. выше ) Я новичок в этом пока ( и в целом в Java ) , так может быть это так и должно работать в 4-ом Tomcat-е? Но зачем тогда там есть reload? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2004, 16:31 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
В принципе на Tomcat по крайней мере с 5 версии поддерживается Hot Deploying - т. е. можно актуализировать аппликацию без рестарта. Т. е. просто копировать WAR-файл со всей аппликацией в [tomact root]/webapps - tomcat сам всё актуализирует. Чтобы загрузить новую версию аппликации для теста использую ANT - если мало файлов было изменено то создание WAR- файла и копирование на сервер длится прим. 30 сек. и ещё столько же нужно томкэту для redeploying. Это примерно столько же по времени сколько нужно было бы томкэту для рестарта. Конечно за это время аппликация будет недоступна для использования - если речь идёт о live-сервере, но для update на live-сёрвере так и так нужна приостановка использования со стороны юзеров. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2004, 12:06 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
2 Грасоff При том что с любым загруженным классом, уже ни чего не сделаешь. Ни томкатом ни чем либо еще. Надо перезапускать приложение. Jsp обновляються путем создания нового класса, посмотри в Tomkat/work, до и после изменения jsp ,там названия классов формируемых из jsp немного изменяються, и накапливаются разные версии для одной и той же страницы. Если имена классов не менять, то томкату по любому нужна перезагрузка или автоматом или вручную. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2004, 13:42 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
так я не о томкате - я об as8... .: 6.000.000 ways to die :. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2004, 14:49 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
Уж незнаю как они сделали :) Попробую поставить, если действительно можно обновлять классы незаметно для пользователя то перехожу на AS ... |
|||
:
Нравится:
Не нравится:
|
|||
21.05.2004, 16:29 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
EdgizПри том что с любым загруженным классом, уже ни чего не сделаешь. Ни томкатом ни чем либо еще. Надо перезапускать приложение Не всё так плохо, как кажется. См. Class ClassLoader Самое главное, это новые варианты "своего" класса создавать из "нового" ClassLoader-а. Вот пример _______________ Alex There are three kinds of people: those who can count and those who can't ... |
|||
:
Нравится:
Не нравится:
|
|||
22.05.2004, 20:14 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
Ну теперь все понятно. Так и знал что недокументированная возможность. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2004, 14:01 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
2 Delphi_User А Вы обратили внимание, что ROOT контекст у Вас стоит внутри комментариев и конечно он не читается <!-- Tomcat Root Context --> <!-- <Context path="" docBase="ROOT" debug="0" reloadable="true"/> --> Кроме того, лучше создать свое приложение а не использовать ROOT контекст Допустим приложение называется app. Тогда в директории (Tomcat 5) D:\Tomcat5\conf\Catalina\localhost создается отдельный файл со следующим содержимым и названием app.xml <Context path="/app" docBase="app" debug="0" reloadable="true"> </Context> а в директории D:\Tomcat5\webapps\ директория app с поддиреторией WEB-INF и т.д. Вобщем все работает "как часы". ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2004, 14:15 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
Кстати, JSP тоже обновляются после копирования в директорию приложения, то есть автоматичски перекомпилируются в момент первого, после копирования, обращения клиента к этой странице. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2004, 15:04 |
|
Томкэт: замена файлов *.class без остановки сервера
|
|||
---|---|---|---|
#18+
Delphi_User Вопрос: можно ли заменять файлы *.class которые используются некоторыми JSP-страничками при РАБОТАЮЩЕМ Томкэте? Короче, я заменяю, но все изменения вступают в силу только при рестарте Томкэта, т.е. приходится остановить его и запустить снова. Допустим файлы стилей *.css, или javascript при РАБОТАЮЩЕМ Томкэте можно заменять и все изменения работают сразу. Можно, только где .class'i лежат? в какой-то wep app? http://jakarta.apache.org/tomcat/tomcat-4.0-doc/manager-howto.html ... |
|||
:
Нравится:
Не нравится:
|
|||
28.05.2004, 22:39 |
|
|
start [/forum/topic.php?fid=59&msg=32523420&tid=2154083]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 314ms |
total: | 480ms |
0 / 0 |