У меня есть 2 webapps:
WebApp 2 зависит от WebApp 1
Если WebApp 1 не запущен, WebApp 2 не работает
Могу ли я определить в tomcat, что я всегда хочу, чтобы webapp 1 запускался до webapp 2?
У меня есть 2 webapps:
WebApp 2 зависит от WebApp 1
Если WebApp 1 не запущен, WebApp 2 не работает
Могу ли я определить в tomcat, что я всегда хочу, чтобы webapp 1 запускался до webapp 2?
В соответствии с Apache wiki (http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27):
Ожидаемый порядок запуска не ожидается. Ни сервлетов, ни Tomcat определите. Вы не можете полагаться на приложения начиная с любого конкретного порядка.
Верно, что 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()); сильный текст
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.