Как я могу развернуть веб-приложение на Tomcat из запущенного приложения - PullRequest
3 голосов
/ 16 июля 2010

Я хотел бы разработать приложение для обновления. Допустим, у меня есть:
- Запуск Tomcat
- Запуск приложения обновления на Tomcat
- Запуск старой версии приложения на том же Tomcat

Я хотел бы
- Остановить старое приложение
- Удалить старое приложение
- Развертывание новой версии приложения (предположим, что у меня есть новый файл war приложения, находящийся в ресурсе приложения Updater.

Возможно ли вообще выполнить такое удаленное развертывание на Tomcat из другого приложения?

Ответы [ 3 ]

3 голосов
/ 10 ноября 2010

Чтобы развернуть проект на сервере Tomcat из другого приложения, вам необходимо:

Добавьте библиотеку в ваш проект «catalina-ant.jar» из папки: {TOMCAT_PATH} \ lib А в вашем проекте для развертывания военного файла вам нужно всего лишь:


org.apache.catalina.ant.DeployTask task = new org.apache.catalina.ant.DeployTask();
task.setUrl("http://localhost:8084/manager");
task.setUsername("managerLogin");
task.setPassword("managerPassword");
task.setPath("/UrlToYourDeploadingProject");
task.setWar(new File("c:/Project.war").getAbsolutePath());
task.execute();

Благодаря этому решению я могу разработать проект, который может автоматически обновлять мои приложения.

1 голос
/ 16 июля 2010

Да. Существует набор инструментов (ну, .jar), выпущенный вместе с Tomcat, который обычно используется ant, но может быть использован любым, кто захочет вызвать код. Существуют задачи для запуска и остановки приложений, развертывания, удаления, перечисления приложений и т. Д .; по сути, это API, который оборачивает функциональность сервлета manager.

Один момент, пока я пытаюсь выкопать имя или ссылку для вас ...

Вот информация Apache об этом материале: http://tomcat.apache.org/tomcat-5.5-doc/manager-howto.html#Executing Команды менеджера с Ant

... а вот пользователь в другом месте, подробно описывающий, как он использует эти задачи: http://raibledesigns.com/wiki/Wiki.jsp?page=TomcatAntTasks

Вы можете возразить, что вы не ant. Это правда, но в муравье нет ничего волшебного, это просто вызов кода внутри банки. Этот код можно вызывать из любого другого места, следующего за API.

Вот учебник по написанию задачам муравья: http://ant.apache.org/manual/tutorial-writing-tasks.html

Не совсем то же самое, но оно должно дать вам представление о том, как работает API.

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

В качестве альтернативы вы можете запустить сервлет manager в своем Tomcat и просто получить доступ к приложению менеджера, например, к веб-службе: используйте браузер или WireShark для отслеживания трафика между вашим браузером и Tomcat при развертывании приложения, а затем продублируйте это на пульте дистанционного управления manager. Я думаю, что использовать инструменты jar проще.

0 голосов
/ 16 июля 2010

Если вы используете инструмент «жизненный цикл проекта», этот процесс развертывания / развертывания можно автоматизировать в цикле разработки.

Сказав это, я думаю о Maven2 и его плагине "maven-deploy":

  • Компиляция MVN: компиляция Java
  • mvn package: создание файла war (для проекта webbapp)
  • mvn deploy: остановите, отмените старое приложение, разверните и запустите новую версию!

После этого вы можете связать эту автоматизацию с сервером непрерывной интеграции (например, Hudson).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...