Мотивом написания данной статьи послужило прочтение поста «Быстрая разработка веб-приложений на Java» и небольшой когнитивный диссонанс, возникший после прочтения и вопрос, который продолжает попрежднему мучать меня — Зачем такие сложности? Если есть WTP!
Далее я расскажу как я веду разработку под tomcat.
Локальная разработка
Для локальной разработки я использую WTP, это намного удобней постоянных запусков/перезапусков проекта, все обновления подхватываются на лету. И готов поспорить с asolntsev на тему тяжести плагина.
Настраивается все очень просто. В Eclipse File->New->Other...->Server, далее выбираем требуемый сервер и пусь, где локально установлена инстанция сервера (Например tomcat) и жмем Finish. Теперь во View «Servers» появился новый сервер, который можно запускать и на который можно публиковать веб-проекты.
Фактически Eclipse используется установленную инстанцию, но конфиги для работы берет из папки .metadata\.plugins\org.eclipse.wst.server.core\tmp[0]\, при желании их можно править напрямую.
Если проект maven — тоже ничего сложного в этом нет. Ставим plugin m2eclipse, добавляем plugin’s репозитарий m2e-extras и доустанавливаем «Maven Integration for WTP», после чего появляется возможность публиковать mvn веб-проекты в WTP.
Достоинства
- Не нужно перезапускать проект — изменения подхватываются на лету
- Избавляемся от ошибок связанных с особенностями контейнера
- Логи отображаются в консоли в Eclipse
Недостатки
- Иногда проект клинит и не обновляется — лечится правой кнопкой на сервере «Clean...»
Удаленная разработка
Когда проект по моему мнению готов, я выкладываю его на тестовый сервер запуском task в ant, для этого придется прописать в build-е пути к catalina-ant.jar, jasper-compiler.jar, jasper-runtime.jar, servlet-api.jar, commons-logging.jar. Почитать про настройку деплоя через ant можно например тут .
<taskdef resource="org/apache/catalina/ant/catalina.tasks" classpathref="tomcat.classpath" />
<target name="deploy_test" depends="war" description="Create a war file">
<undeploy url="${tomcat.node1}/manager" username="admin" password="admin" path="/test" failonerror="no"/>
<undeploy url="${tomcat.node2}/manager" username="admin" password="admin" path="/test" failonerror="no"/>
<deploy url="${tomcat.node1}/manager" username="admin" password="admin" path="/test" war="${distrib}" />
<deploy url="${tomcat.node2}/manager" username="admin" password="admin" path="/test" war="${distrib}" />
</target>
Все — обновленная версия проекта ушла на сервер (или на несколько серверов).
Достоинства
- Простота использования
- Надежность обновления
Недостатки
- Перед публикацие требуется переcборка war
Заключение
Данные методы не претендуют на универсальность, но я не сталкивался c задачами, когда было бы невозможно использовать данную схему работы. Хотелось бы также услышать ваше мнение по поводу данных способов работ.