Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Томкэт: замена файлов *.class без остановки сервера / 21 сообщений из 21, страница 1 из 1
19.05.2004, 10:21
    #32523318
Delphi_User
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
Вопрос: можно ли заменять файлы *.class которые используются некоторыми JSP-страничками при РАБОТАЮЩЕМ Томкэте?
Короче, я заменяю, но все изменения вступают в силу только при рестарте Томкэта, т.е. приходится остановить его и запустить снова. Допустим файлы стилей *.css, или javascript при РАБОТАЮЩЕМ Томкэте можно заменять и все изменения работают сразу.
...
Рейтинг: 0 / 0
19.05.2004, 10:47
    #32523372
ORA-XXXXX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
Кроме того без перезагрузки сервера можно менять файлы *.jsp
...
Рейтинг: 0 / 0
19.05.2004, 11:09
    #32523420
Грасоff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
to Delphi_User

в тэге <context> (файл server.xml) есть атрибут reloadable. ему прописывается значение true. тогда томкэт периодичсеки проверяет подкаталоги WEB-INF/classes и WEB-INF/lib на новые версии классов/библиотек. скорость томкэта снижается при этом. т.е. на рабочем приложении не рекомендую.

.: 6.000.000 ways to die :.
...
Рейтинг: 0 / 0
19.05.2004, 11:52
    #32523572
Delphi_User
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
вот добавил reloadable="true"
в server.xml

<!-- Tomcat Root Context -->
<!--
<Context path="" docBase="ROOT" debug="0" reloadable="true"/>
-->

НО...
эффекта пока не наблюдается...
может надо подольше подождать пока томкэт все таки увидит что файлы *.class были изменены
но тогда кто мне подскажет через какой интервал времени сервер смотрит это
...
Рейтинг: 0 / 0
19.05.2004, 13:08
    #32523803
Грасоff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
ну это в документации сказано ,что обновляется. там же сказано и про тормоза системы. я сейчас проверил - не работает тоже.

.: 6.000.000 ways to die :.
...
Рейтинг: 0 / 0
19.05.2004, 13:31
    #32523876
Delphi_User
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
Короче это просто надо для того что бы можно было менять файлы *.class по FTP, не останавливая сервера. А так прийдется наверное ставить что то типа VNC, только для того что бы остановить и обратно запустить томкэт.
А это не желательно.
...
Рейтинг: 0 / 0
19.05.2004, 17:30
    #32524563
teran
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
Где то на буржуйском форуме тоже было. Советовали добавить в <Context ...
<Loader checkInterval="3"/>
<Logger className="org.apache.catalina.logger.SystemOutLogger" timestamp="true"/>

по умолчанию там кажется 15 стоит


Только мне это тоже не помогло :))

Может все зависит от версии томката?! У меня 4.1.27
...
Рейтинг: 0 / 0
19.05.2004, 17:50
    #32524617
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
Последняя версия Tomkat - 5.0.24. И после изменения файлов у меня поисходит автоматический перезапуск соответствующего приложения - одного из тех, которые указаны в %TOMKAT_HOME%/conf/Catalina/localhost. И это как-то сразу после установки получилось, ничего особенно не настраивал.
...
Рейтинг: 0 / 0
19.05.2004, 18:30
    #32524718
sanek842
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
а на 4-ом ( 4.1.27) Tomcat-e у кого-нибудь получается?
там еще на буржуйских сайтах рекомендуют в server.xml вот так написать
<DefaultContext reloadable="true"/>
Но автоматический reload не выходит, после замены файла пишет что класс не найден, лечится перезапуском ( такое чувство что что-то всетаки делается, но не доконца )
P.S.
пошарился еще на relib.com
здесь напр. пришли к выводу что перезапускать надо
И еще подскажите по поводу ТОМКАТА
а здесь вроде у кого то получилось
Перезапуск сервлетов в Tomcat 4...
...
Рейтинг: 0 / 0
20.05.2004, 10:02
    #32525300
Edgiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
В jvm нет возможности выгружать/обновлять классы. Так что перезапуск обязателен.
...
Рейтинг: 0 / 0
20.05.2004, 11:31
    #32525568
Грасоff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
а причем тут jvm?

вот application server 8 от sun вполне успешно релуд делает.

.: 6.000.000 ways to die :.
...
Рейтинг: 0 / 0
20.05.2004, 16:31
    #32526640
sanek842
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
Возможно это будет шагом к решению проблемы ...

При установке 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?
...
Рейтинг: 0 / 0
21.05.2004, 12:06
    #32527815
Aleksej
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
В принципе на Tomcat по крайней мере с 5 версии поддерживается Hot Deploying - т. е. можно актуализировать аппликацию без рестарта. Т. е. просто копировать WAR-файл со всей аппликацией в [tomact root]/webapps - tomcat сам всё актуализирует.

Чтобы загрузить новую версию аппликации для теста использую ANT - если мало файлов было изменено то создание WAR- файла и копирование на сервер длится прим. 30 сек. и ещё столько же нужно томкэту для redeploying. Это примерно столько же по времени сколько нужно было бы томкэту для рестарта.

Конечно за это время аппликация будет недоступна для использования - если речь идёт о live-сервере, но для update на live-сёрвере так и так нужна приостановка использования со стороны юзеров.
...
Рейтинг: 0 / 0
21.05.2004, 13:42
    #32528095
Edgiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
2 Грасоff
При том что с любым загруженным классом, уже ни чего не сделаешь. Ни томкатом ни чем либо еще. Надо перезапускать приложение.

Jsp обновляються путем создания нового класса, посмотри в Tomkat/work, до и после изменения jsp ,там названия классов формируемых из jsp немного изменяються, и накапливаются разные версии для одной и той же страницы.

Если имена классов не менять, то томкату по любому нужна перезагрузка или автоматом или вручную.
...
Рейтинг: 0 / 0
21.05.2004, 14:49
    #32528304
Грасоff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
так я не о томкате - я об as8...

.: 6.000.000 ways to die :.
...
Рейтинг: 0 / 0
21.05.2004, 16:29
    #32528646
Edgiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
Уж незнаю как они сделали :) Попробую поставить, если действительно можно обновлять классы незаметно для пользователя то перехожу на AS
...
Рейтинг: 0 / 0
22.05.2004, 20:14
    #32529453
stdio
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
EdgizПри том что с любым загруженным классом, уже ни чего не сделаешь. Ни томкатом ни чем либо еще. Надо перезапускать приложение
Не всё так плохо, как кажется. См. Class ClassLoader
Самое главное, это новые варианты "своего" класса создавать из "нового" ClassLoader-а. Вот пример
_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
25.05.2004, 14:01
    #32532427
Edgiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
Ну теперь все понятно.
Так и знал что недокументированная возможность.
...
Рейтинг: 0 / 0
25.05.2004, 14:15
    #32532465
MBasil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
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
и т.д.
Вобщем все работает "как часы".
...
Рейтинг: 0 / 0
25.05.2004, 15:04
    #32532642
MBasil
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
Кстати, JSP тоже обновляются после копирования в директорию приложения, то есть автоматичски перекомпилируются в момент первого, после копирования, обращения клиента к этой странице.
...
Рейтинг: 0 / 0
28.05.2004, 22:39
    #32539678
Aion
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Томкэт: замена файлов *.class без остановки сервера
Delphi_User
Вопрос: можно ли заменять файлы *.class которые используются некоторыми JSP-страничками при РАБОТАЮЩЕМ Томкэте?
Короче, я заменяю, но все изменения вступают в силу только при рестарте Томкэта, т.е. приходится остановить его и запустить снова. Допустим файлы стилей *.css, или javascript при РАБОТАЮЩЕМ Томкэте можно заменять и все изменения работают сразу.
Можно, только где .class'i лежат? в какой-то wep app?

http://jakarta.apache.org/tomcat/tomcat-4.0-doc/manager-howto.html
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Томкэт: замена файлов *.class без остановки сервера / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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