Запустите веб-приложения в tomcat в определенном порядке - PullRequest
10 голосов
/ 01 октября 2009

У меня есть 2 веб-приложения:

WebApp 2 зависит от WebApp 1

Если WebApp 1 не работает, WebApp 2 завершается ошибкой

Могу ли я определить в tomcat, что я всегда хочу, чтобы webapp 1 запускался до webapp 2?

Ответы [ 3 ]

9 голосов
/ 02 октября 2009

Согласно вики Apache (на http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27):

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

0 голосов
/ 03 декабря 2014

Liferay, похоже, переопределил HostConfig таким образом, чтобы это стало возможным. Основная идея состоит в том, чтобы расширить HostConfig, а затем переопределить либо deployApps, либо отдельные методы deployDescriptors, depoyWars и deployDirectories, чтобы сортировать приложения так, как вы этого хотите. Затем измените файл Tomcat conf / server.xml, добавив атрибут hostConfigClass к элементу Host.

Подробнее см. http://www.javadocs.com/docs/com.liferay.portal/support-tomcat/6.2.0/com/liferay/support/tomcat/startup/PortalHostConfig.java.

0 голосов
/ 13 октября 2014

Это правда, что Tomcat не предоставляет никакого способа обеспечения порядка развертывания.

Tomcat развертывает веб-приложения в следующем порядке:

1. Любые дескрипторы контекста будут развернуты первыми.

2. Затем будут развернуты взорванные веб-приложения, на которые не ссылается ни один дескриптор контекста. Если у них есть связанный файл .WAR в appBase, и он новее, чем разорванное веб-приложение, разорванный каталог будет удален, а веб-приложение будет повторно развернуто из .WAR

3.WAR файлы будут развернуты

Вот предлагаемое решение:

Если вы хотите указать порядок развертывания, определите контекст для своего веб-приложения в $ CATALINA_BASE / conf / [enginename] / [hostname] /MyApp.xml

Tomcat сканирует $ CATALINA_BASE / conf / [enginename] / [имя хоста] /, выполняя File listFiles (), который возвращает массив файлов, отсортированный по хеш-значению (зависит от ОС).

Вы можете использовать следующий код для проверки порядка развертывания веб-приложений

Файл файл = новый файл ("/ opt / tomcat / conf / Catalina / localhost"); File [] files = file.listFiles (); для (Файл f: файлы) { System.out.println ("Имя файла:" + f.getName ()); сильный текст

...