Запустить / остановить веб-приложение от себя? - PullRequest
8 голосов
/ 12 июня 2009

Я создал веб-приложение, используя Java, Struts и работая на Apache Server и Tomcat. Было бы очень полезно иметь возможность перезапустить приложение из Интернета. Я не хочу перезапускать Tomcat, только это веб-приложение, так же, как это делает Tomcat Manager.

Ты знаешь, как я могу это сделать? Если нет, то есть ли способ имитировать такое поведение (перезагрузить config.properties, запустить процесс инициализации Hibernate и т. Д.)?

Большое спасибо.

Ответы [ 3 ]

5 голосов
/ 12 июня 2009

Я быстро взглянул на исходный код Tomcat Manager. Похоже, что есть класс, который является частью исходного кода Tomcat, под названием «Контейнерный сервлет». Из javadocs:

A ContainerServlet - это сервлет который имеет доступ к внутренней каталине функциональность и загружается из Загрузчик класса Catalina вместо загрузчик классов веб-приложений.

ContainerServlet автоматически получает оболочку, которую можно использовать для получения Context и Deployer, а Deployer имеет полезные методы, такие как start(String contextPath) и stop(String contextPath), которые будут делать то, что вы хотите.

Итак, я думаю, вам нужно написать свой собственный сервлет, который наследуется от ContainerServlet, и настроить Tomcat для загрузки вашего сервлета с помощью загрузчика классов Catalina (посмотрите, как менеджер настроен, чтобы увидеть как). Обратите внимание, что это, вероятно, не вариант для вас в размещенной среде.

Тогда ваш сервлет может иметь, скажем, кнопку, которую вы нажимаете, чтобы перезагрузить приложение. Я рекомендую поставить какую-то защиту паролем перед этим. :)

3 голосов
/ 13 июня 2009

Просто нажмите на URL

http://<username>:<password>@<hostname>:<port>/manager/stop?path=/<context path> 

до остановки и

http://<username>:<password>@<hostname>:<port>/manager/start?path=/<context path> 

для начала. Это моделирует вас с помощью приложения менеджера.

1 голос
/ 12 июня 2009

Tomcat Manager предлагает интерфейс http для запуска / остановки приложения и других задач. Есть Задачи Ant , которые вы можете использовать для простого доступа к этим операциям.

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