У Tomcat имеется удобная возможность для обновления приложения без остановки самого сервера.
Включается она опцией autoDeploy="true"
в описании элемента <Host>
файла server.xml
.
Рассмотрим его работу на примере.
Имеется приложение:
$ curl http://localhost:8084 First file
Теперь – редактируем файл server.xml
:
<Host name="localhost" appBase="/home/user/APP/app-application/" unpackWARs="true" autoDeploy="true" deployOnStartup="false">
Перезапускаем Tomcat, и ещё раз проверяем:
$ cat ../app-application/APP/index.jsp First file
$ curl http://localhost:8084 First file
Создаём новый war
-файл:
$ cat index.jsp Second file
$ jar cf ROOT.war index.jsp
Копируем его в директорию appBase
:
$ cp -n ROOT.war ../app-application/
Смотрим лог-файл:
$ tail -n 3 app-server/logs/catalina.2014-06-03.log INFO: Undeploying context [] Jun 3, 2014 2:06:33 PM org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive /home/user/APP/app-application/ROOT.war
Проверяем:
$ curl http://localhost:8084 Second file
То же самое будет при использовании не распакованных war
-файлов:
<Host name="localhost" appBase="/home/user/APP/app-application/" unpackWARs="false" autoDeploy="true" deployOnStartup="false">