Tomcat перезагружает webapp из командной строки

У меня есть совместимая с PCI DSS среда, в которой запущено несколько приложений, и я хочу перезапустить только одно приложение без перезапуска сервера. У меня нет менеджера, потому что, видимо, это не разрешено в этой среде.

Как мне начать перезапуск одного веб-приложения через командную строку?

Ответ 1

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

touch web.xml

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

Ответ 2

Вот как я это делаю:

  • Убедитесь, что у вас есть пользователь с ролью "manager- script" в базе данных пользователя tomcat. Это обычно означает, что у вас есть такая строка в ${TOMCAT}/conf/tomcat-users.xml:
<user username="admin" password="secret" roles="manager-gui,manager-script"/>

В противном случае вы получите ошибку 403 из-за защиты подделок на основе межсайтового запроса (CSRF).

  1. Используйте curl или любой инструмент командной строки, который вы хотите получить с помощью URl <yourserver>/manager/text/reload?path=/<context_path>:

    curl --user user:secret http://localhost:8080/manager/text/reload?path=/mypath  
    

Ответ 3

Без доступа к приложению менеджера вы не сможете этого сделать. Если вы можете получить доступ к управляющему приложению и по-прежнему хотите использовать командную строку вместо своего веб-браузера, вы можете попробовать эту командной строки script для управления tomcat под названием tomcat-manager. Это требует Python, но позволяет делать вещи из оболочки Unix, например:

$ tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager/ reload /myapp

и

$ tomcat-manager --user=admin --password=newenglandclamchowder \
> http://localhost:8080/manager deploy /myapp ~/src/myapp/myapp.war

Ответ 4

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

Ответ 5

работает, измените имя app.war на временное app.war.bkp (любое имя для резервной копии), а затем, когда tomcat удалит исходную папку webapp, измените имя .bkp на оригинальное имя. эта работа только для пользователя с консольным доступом.