У меня есть веб-приложение java и интерфейс, работающий на Tomcat 9 на VPS.В папке webapps есть файл war, а код интерфейса (index.html и т. Д.) Помещается в webapps/root/app
.В веб-приложении Java есть класс, расширяющий QuartzInitializerListener
с аннотацией @WebListener
для определения триггеров и планирования заданий.Никаких других слушателей не было явно указано в web.xml или как-то иначе для кварца.
Проблема, с которой я сталкиваюсь, заключается в том, что инициализируются два контекста (и, следовательно, два планировщика), в результате чего вместо одного запускаются два задания.один.Возможно, проблема в двух хостах с одинаковой базой приложений?Если да, как я могу предотвратить это поведение, имея локальный хост для менеджера tomcat (для развертывания, запуска, остановки и т. Д.) И другой хост исключительно для веб-приложения и внешнего интерфейса?
Я пробовал:
- удаление первого хоста и установка имени второго хоста на localhost -> Это работает, за исключением того, что я могу получить доступ к диспетчеру tomcat через
http://foo.bar.com/manager/html
, что нежелательно.Я хотел бы получить доступ к tomcat, используя только IP-адрес, а не имя домена. - , перемещая только веб-приложение + внешний интерфейс и помещая его в отдельную папку в каталоге tomcat (изменив вторую
Host
appBase на foobarapp
) -> Я не могу выполнить развертывание на foobarapp
, так как с ним не связан менеджер tomcat.
В настоящее время применяется обходной путь, чтобы остановить инициализацию второго контекста с помощью блокировки файла.Это работает как задумано, так как первый контекст, который получает доступ к файлу, блокирует его и записывает true
, чтобы показать, что контекст был инициализирован.Второй контекст останавливает выполнение, увидев, что в файле установлено true
.При остановке первый контекст устанавливает значение в файле как false
.
server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="false">
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t "%r" %s %b" />
</Host>
<Host name="foo.bar.com" appBase="webapps" unpackWARs="true" autoDeploy="true">
<Alias>foo.bar.com</Alias>
<Context path="" docBase="{tomcat_directory}/webapps/ROOT/app" debug="0" privileged="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="foo_bar." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" resolveHosts="false" />
<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
</Host>
Любая помощь будет принята с благодарностью.