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).
-
Используйте 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 на оригинальное имя. эта работа только для пользователя с консольным доступом.