2009-10-01 21 views
10

tengo 2 webapps:Iniciar aplicaciones web en Tomcat en un orden determinado

WebApp 2 depende de la aplicación web 1

Si la aplicación web 1 no está en ejecución, aplicación web 2 falla

puedo definir en Tomcat que se Siempre quiero que webapp 1 comience antes de webapp 2?

+3

¿Se pregunta si se ha encontrado una solución para este problema? –

+0

Si pudiera organizarlo de forma tal que no se realicen solicitudes en WebApp 1 hasta que Tomcat esté completamente actualizado, quizás vuelva a codificar WebApp 2 para cargar de forma perezosa cualquier dependencia que tenga en WebApp 1 previa solicitud. –

+0

Hay una manera hacky. Véase mi respuesta aquí: http://stackoverflow.com/questions/8793891/tomcat-starting-webapps-in-a-specific-order/16976047#16976047 –

Respuesta

0

Es cierto que tomcat no proporciona ninguna forma de hacer cumplir la orden de implementación.

Tomcat despliega webapps en orden siguiente:

Descriptores de contexto 1.Any serán desplegados primero.

2. Las aplicaciones web expulsadas a las que no hace referencia ningún descriptor de contexto se desplegarán. Si tienen un archivo asociado .WAR en el AppBase y es más reciente que la aplicación web explotado, el directorio expandido se retira y la aplicación de web se redistribuirá de los archivos 3.WAR .WAR

serán desplegados

Aquí es una solución propuesta:

Si desea especificar el orden de despliegue a continuación, definir un contexto para su aplicación web en CATALINA_BASE $/conf/[EngineName]/[nombre de host] /MyApp.xml

Tomcat escanea $ CATALINA_BASE/conf/[enginename]/[hostname]/realizando File listFiles() que devuelve una matriz de archivos ordenada por valor hash (dependiente del sistema operativo).

Usted puede utilizar el siguiente código para comprobar en qué orden aplicaciones web serán desplegados

del archivo = new File ("/ opt/tomcat/conf/Catalina/localhost"); Archivo [] files = file.listFiles(); for (Archivo f: archivos) { System.out.println ("Nombre de archivo:" + f.getName()); texto fuerte

0

Liferay parece haber anulado HostConfig de una manera que hace esto posible. La idea básica es extender HostConfig y luego anular deployApps o los métodos individuales deployDescriptors, depoyWars y deployDirectories para ordenar las aplicaciones de la manera que desee. Luego modifique conf/server.xml de Tomcat agregando el atributo hostConfigClass al elemento Host.

Ver http://www.javadocs.com/docs/com.liferay.portal/support-tomcat/6.2.0/com/liferay/support/tomcat/startup/PortalHostConfig.java para más detalles.

Cuestiones relacionadas