2009-10-01 11 views
10

Mam 2 webapps:Zacznij webapps Tomcat w zdeterminowanej celu

webapp 2 zależy od aplikacji sieci Web 1

Jeśli WebApp 1 nie działa, WebApp 2 nie

mogę określić w tomcat że Zawsze chcę, żeby ta aplikacja 1 zaczęła się przed webappem 2?

+3

Zastanawiasz się, czy znaleziono obejście tego problemu? –

+0

Jeśli mógłbyś tak ustawić, aby żadne żądania nie były wysyłane na WebApp 1, dopóki Tomcat się nie skończy, być może ponownie skopiuj WebApp 2, aby leniwie załadować dowolną zależność, jaką ma na WebApp 1 na pierwsze żądanie. –

+0

Jest hacky sposób. Zobacz moją odpowiedź tutaj: http://stackoverflow.com/questions/8793891/tomcat-starting-webapps-in-a-specific-order/16976047#16976047 –

Odpowiedz

0

To prawda, że ​​tomcat nie zapewnia żadnego sposobu egzekwowania kolejności wdrażania.

Tomcat wykorzystuje webapps w następującej kolejności:

1.Każde Deskryptory kontekście będzie pierwszym rozłożonym.

2. Zostaną wdrożone wyodrębnione aplikacje internetowe, do których nie odwołuje się żaden deskryptor kontekstu. Jeśli mają skojarzony plik .WAR w appBase i jest nowsza niż eksplodowała aplikacji internetowej, eksplodowała katalogu zostaną usunięte i webapp zostaną przesunięte z .war

plików 3.WAR zostanie wdrożony

Oto proponowane rozwiązanie:

Jeśli chcesz określić kolejność wdrażania następnie określić kontekst dla swojej aplikacji internetowej w $ CATALINA_BASE/conf/[enginename]/[nazwa hosta] /MyApp.xml

Tomcat skanuje $ CATALINA_BASE/conf/[enginename]/[hostname]/wykonując File listFiles(), który zwraca tablicę File posortowaną według wartości skrótu (zależnej od systemu operacyjnego).

Można użyć następującego kodu, aby sprawdzić, w którym webapps Zamówienie zostanie wdrożony

Plik = new File ("/ opt/tomcat/conf/Catalina/localhost"); Plik [] files = file.listFiles(); dla (Plik f: pliki) { System.out.println ("Nazwa pliku:" + f.getName()); silny tekst

0

Wydaje się, że Liferay nadpisał HostConfig w sposób, który to umożliwia. Podstawową ideą jest rozszerzenie HostConfig, a następnie nadpisanie albo deployApps, albo poszczególnych metod, wdrażanieDescriptorów, depoyWars i deployDirectories w celu sortowania aplikacji w sposób, w jaki chcesz. Następnie zmodyfikuj plik conf/server.xml serwera Tomcat, dodając atrybut hostConfigClass do elementu Host.

Aby uzyskać szczegółowe informacje, patrz http://www.javadocs.com/docs/com.liferay.portal/support-tomcat/6.2.0/com/liferay/support/tomcat/startup/PortalHostConfig.java.

Powiązane problemy