2008-11-25 23 views
5

Estoy tratando de usar enlaces simbólicos en una de las aplicaciones que ejecuto en Tomcat5. Gracias a la ayuda de another StackOverflow question que era capaz de hacerlo mediante la creación de un archivo context.xml enTomcat context.xml archivos, ¿hay una jerarquía?

/...myapplication/META-INF/context.xml

Ahora estoy tratando de implementar esto en un servidor de producción Sin embargo, hay otras aplicaciones ejecutándose en él. Y hay otro archivo de contexto

/...tomcat/conf/context.xml

Me parece Estos son establecer configuraciones a nivel de servidor para todas las aplicaciones. Si dejo enlaces en el archivo conf/context.xml, mis enlaces simbólicos funcionan. Si no permitoLinks en conf/context.xml, los enlaces simbólicos de mi aplicación no funcionan, aunque los he permitido en el archivo META-INF/context.xml

Mi pregunta es, ¿el conf/context? xml controla todas las aplicaciones? Si quiero que los enlaces simbólicos funcionen solo en una aplicación, ¿necesito eliminar conf/context.xml y crear nuevos archivos de contexto para cada aplicación? ¿O hay una forma en que puedo permitir enlaces simbólicos solo en aplicaciones?

Respuesta

7

Consulte my answer a la pregunta "Which Tomcat 5 context file takes precedence".

En relación con su pregunta específica allowLinks, el valor en conf/context.xml tiene prioridad por defecto. Si no dice nada en su conf/context.xml, el valor predeterminado es allowLinks="false" en su conf/context.xml.

Si desea cambiar sólo para su myapplication, tratando de decir <Context allowLinks="true" ...> en su META-INF/context.xml no tendrá ningún efecto, porque normalmente el ajuste conf/context.xml tendrá prioridad.

Pero, si usted dice en su <Context allowLinks="true" override="true" ...>META-INF/context.xml, entonces todas sus configuraciones en <Context>META-INF/context.xml serán más alta prioridad, anulando cualquier cosa en conf/context.xml.

Finalmente, en lugar de un archivo myapplication/WEB-INF/context.xml, recomiendo usar un archivo conf/Catalina/localhost/myapplication.xml. Esta técnica significa que puede mantener limpios los contenidos de su WEB-INF, que son las entrañas de su aplicación web. No me gusta arriesgarme a perder el control en las entrañas de mi aplicación web. :-)

0

Solo para agregar un punto.

Por lo general XX meta-inf/context.xml se copia en el conf/Catalina/localhost/myapplication.xml

Cuando redploying presentar una guerra se elimina el conf/Catalina/localhost/myapplication.xml y una nueva uno copiado como se describe arriba.

Esto puede ser un verdadero dolor. Me gusta la idea del contexto específico de la aplicación, pero no veo cómo ayuda esto en el directorio meta-inf.

Para Prod, UAT, etc. esto se convierte en un verdadero dolor.

Por lo tanto, para cualquier servidor estático pero específico de la aplicación, es mejor ponerlo en conf/context.xml. Lo cual tiene el negativo de que tiene contexto para varias aplicaciones, toque una sin darse cuenta que las toque todas.

+1

Esto no es cierto. Directamente de la [documentación] (http://tomcat.apache.org/tomcat-5.5-doc/config/context.html): _Una vez que este archivo exista, no será reemplazado si una nueva GUERRA con una nueva/META- INF/context.xml se coloca en la appBase._ del host – Lucas

Cuestiones relacionadas