Кварц / Tomcat инициализируются два контекста - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть веб-приложение 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 &quot;%r&quot; %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 &quot;%r&quot; %s %b" resolveHosts="false" />
    <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />
</Host>

Любая помощь будет принята с благодарностью.

...