Запускайте веб-приложения в tomcat в определенном порядке.

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

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

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

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

3 ответа

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

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

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 для получения подробной информации.

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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам