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?
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?
Secondo il wiki di Apache (a http://wiki.apache.org/tomcat/FAQ/Miscellaneous#Q27):
Non v'è alcun ordine di avvio previsto. Né le specifiche Servlet né Tomcat definiscono uno. Non puoi fare affidamento sulle app a partire da un ordine particolare.
È 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
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.
Chiedersi se è stata trovata una soluzione per questo problema? –
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. –
C'è un modo hacky. Vedere la mia risposta qui: http://stackoverflow.com/questions/8793891/tomcat-starting-webapps-in-a-specific-order/16976047#16976047 –