2009-10-01 11 views
10

Ho 2 webapps:Inizia webapps in Tomcat in un ordine determinato

WebApp 2 dipende dal WebApp 1

Se WebApp 1 non è in esecuzione, WebApp 2 fallisce

posso definire in Tomcat che Voglio sempre che la webapp 1 inizi prima di webapp 2?

+3

Chiedersi se è stata trovata una soluzione per questo problema? –

+0

Se è possibile organizzarlo in modo tale che non vengano effettuate richieste su WebApp 1 fino a quando Tomcat non è completamente in alto, è possibile ricodificare WebApp 2 per caricare pigramente qualsiasi dipendenza che ha su WebApp 1 alla prima richiesta. –

+0

C'è un modo hacky. Vedere la mia risposta qui: http://stackoverflow.com/questions/8793891/tomcat-starting-webapps-in-a-specific-order/16976047#16976047 –

risposta

0

È vero che tomcat non fornisce alcun modo per applicare l'ordine di distribuzione.

Tomcat dispiega webapps in seguente ordine:

1.Any descrittori contesto verranno distribuiti prima.

2. Le applicazioni Web estese non referenziate da qualsiasi descrittore di contesto verranno quindi distribuite. Se hanno un file .WAR associato nella AppBase ed è più recente rispetto alla applicazione web esploso, la directory esplosa verrà rimosso e la webapp sarà ridistribuito dai file 3.WAR .WAR

sarà schierato

Qui è una soluzione proposta:

Se si desidera specificare l'ordine di schieramento quindi definire un contesto per il vostro web app in $ CATALINA_BASE/conf/[nomemotore]/[hostname] /MyApp.xml

Tomcat esegue la scansione $ CATALINA_BASE/conf/[nomemile]/[nomehost]/eseguendo File listFiles() che restituisce un array di file ordinato per valore hash (dipendente dal sistema operativo).

È possibile utilizzare il seguente codice per sapere in quali webapps ordine saranno impiegate

del file = new File ("/ opt/tomcat/conf/Catalina/localhost"); File [] files = file.listFiles(); per (File f: file) { System.out.println ("Nome file:" + f.getName()); testo forte

0

Liferay sembra avere sostituito HostConfig in un modo che lo rende possibile. L'idea di base è di estendere HostConfig, quindi eseguire l'override di deployApps o dei singoli metodi deployDescriptors, depoyWars e deployDirectories per ordinare le applicazioni nel modo desiderato. Quindi modifica il file conf/server.xml di Tomcat aggiungendo l'attributo hostConfigClass all'elemento Host.

Vedere http://www.javadocs.com/docs/com.liferay.portal/support-tomcat/6.2.0/com/liferay/support/tomcat/startup/PortalHostConfig.java per dettagli.