Запуск webapps в tomcat в определенном порядке

У меня есть 2 webapps:

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

Если WebApp 1 не запущен, WebApp 2 не работает

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

Ответ 1

В соответствии с Apache wiki (http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27):

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

Ответ 2

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

Tomcat развертывает webapps в следующем порядке:

1. Каждый дескриптор контекста будет развернут первым.

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

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

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

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

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

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

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

Ответ 3

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.