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


Автор: Andrey1 23.5.2010, 12:22
Думаю, как лучше обновлять веб-приложение на удаленном сервере:

1) Не пойму, можно ли просто копировать обновленные файлы в папке, которая распаровывается из war архива?
2) Можно ли деплоить проект сразу на удаленный сервер? (NetBeans не позволяет добавлять удаленные сервера приложения, но, возможно, можно как-то это настроить через ant).

Автор: powerOn 23.5.2010, 16:34
Можно задеплоить war архив через веб-страницу tomacat-manager-а. Еще вот http://tomcat.apache.org/tomcat-5.5-doc/manager-howto.html#Deploy%20A%20New%20Application%20Remotely можно почитать. 

Автор: Vasay 23.5.2010, 17:03
Цитата

NetBeans не позволяет добавлять удаленные сервера приложения, но, возможно, можно как-то это настроить через ant


NetBeans может управлять удаленным GlassFish в том числе деплоить приложения. Так же, при определенных настройках возможна удаленная отладка.


Автор: Andrey1 27.5.2010, 10:33
Цитата(Vasay @  23.5.2010,  17:03 Найти цитируемый пост)
NetBeans может управлять удаленным GlassFish в том числе деплоить приложения. 

Да, это хорошо, тока где-ж найти дешевый хостинг с GlassFish smile...

Автор: COVD 27.5.2010, 15:50
Цитата

Думаю, как лучше обновлять веб-приложение 

Лучше - без затей: удалить старый вар, дождаться сообшения об удалении приложения, положить новый вар. На любом сервере.

Автор: Andrey1 28.5.2010, 07:54
Цитата(COVD @  27.5.2010,  15:50 Найти цитируемый пост)
Лучше - без затей...

Пока без этого обхожусь: jsp редактирую локально, затем - просто копирую в удаленную папку, все остальное - копирую с перезапуском приложения. 
Так получается быстрее чем через пересбор и перезапуск вар-ника.

Автор: Vasay 28.5.2010, 10:03
Andrey1, 

А зачем часто что-то на сервере менять? Разрабатываешь, дебажишь на локале, а на сервер только релизы. 

Автор: Andrey1 28.5.2010, 22:26
Цитата(Vasay @  28.5.2010,  10:03 Найти цитируемый пост)
А зачем часто что-то на сервере менять? Разрабатываешь, дебажишь на локале, а на сервер только релизы.  

Любое законченное изменение - это и есть релиз smile.

Целиком обновлять - можно, но было б идеально, если можно было обновлять только то, что изменилось.

Вообще еще удобно держать исходники в репозитории типа svn и на сервере пересобирать. Тока вот ручками нужно это все настраивать... 
Вначале можно попробовать обновлять только скомпилированный веб-проект...

Автор: COVD 28.5.2010, 22:53
Цитата

Целиком обновлять - можно, но было б идеально, если можно было обновлять только то, что изменилось.

Веб-приложение можно строить как набор веб-проектов (варов), а каждый веб-проект может состоять из одной jsp.

Автор: Vasay 28.5.2010, 23:51
Andrey1, 

Цитата

Целиком обновлять - можно, но было б идеально, если можно было обновлять только то, что изменилось.


Тут и заключается кардинальное отличие web приложения на Java от web приложения, скажем,  на php - в случае php время жизни приложения один запрос. При следующем запросе оно запускается вновь, как следствие, заменили вы один файл php на новый -  следующий запрос обрабатывает новая версия приложения.

В случае с Java, время жизни приложения с момента его деплоя до момента андеплоя. Некоторые объекты создаются при старте и существуют в единственном экземпляре все время жизни приложения. Некоторые объекты существуют в единственном экземпляре для каждой сессии. Какие-нибудь конфигурационные файлы читаются только при старте. 

Потому замена одного класса на другой - операция по смене органа на живом организме. Так просто ее не сделаешь.  Да есть возможность построения модульных приложений:
 - порталы с их портлетами
 - OSGI
 - использование скриптовых языков (например,  Groovy ). Кстати, есть фреймворк на базе Spring - Grails. Там Groovy  используется как основной язык. Изменения в Groovy классах фиксируются без перезагрузки приложения на сервере. Правда, иногда, все же требуется перезапуск. 

Автор: Andrey1 29.5.2010, 07:38
Цитата(Vasay @  28.5.2010,  23:51 Найти цитируемый пост)
Тут и заключается кардинальное отличие web приложения на Java от web приложения, скажем,


Да, согласен, перезапуск веб-приложения на java - отдельная не простая тема. 

Но чтобы перезапустить проект, сначала нужно иметь на сервере его последнюю версию smile.

Добавлено @ 07:41
Цитата(COVD @  28.5.2010,  22:53 Найти цитируемый пост)
Веб-приложение можно строить как набор веб-проектов

Из моего опыта могу сказать, что разбивать проект нужно только тогда, когда уже нельзя оставить его целым smile. Причем части, на которые нужно разбивать, должны быть как можно крупнее smile. Иначе начинаешь путаться.

Автор: COVD 29.5.2010, 19:11
Цитата

Причем части, на которые нужно разбивать, должны быть как можно крупнее 

Возможно, применим критерий "один ресурс - один проект". И вписывается в концепцию REST. 

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