Я быстро взглянул на исходный код Tomcat Manager. Похоже, что есть класс, который является частью исходного кода Tomcat, под названием «Контейнерный сервлет». Из javadocs:
A ContainerServlet - это сервлет
который имеет доступ к внутренней каталине
функциональность и загружается из
Загрузчик класса Catalina вместо
загрузчик классов веб-приложений.
ContainerServlet автоматически получает оболочку, которую можно использовать для получения Context и Deployer, а Deployer имеет полезные методы, такие как start(String contextPath)
и stop(String contextPath)
, которые будут делать то, что вы хотите.
Итак, я думаю, вам нужно написать свой собственный сервлет, который наследуется от ContainerServlet, и настроить Tomcat для загрузки вашего сервлета с помощью загрузчика классов Catalina (посмотрите, как менеджер настроен, чтобы увидеть как). Обратите внимание, что это, вероятно, не вариант для вас в размещенной среде.
Тогда ваш сервлет может иметь, скажем, кнопку, которую вы нажимаете, чтобы перезагрузить приложение. Я рекомендую поставить какую-то защиту паролем перед этим. :)