2008-11-26 9 views
17

Tomcat documentation dice:¿Qué archivo de contexto Tomcat 5 tiene prioridad?

Las ubicaciones para los descriptores de contexto son;

$ CATALINA_HOME/conf/[EngineName]/[nombre de host] /context.xml
$ CATALINA_HOME/webapps/[WebAppName] /META-INF/context.xml

En mi servidor, tengo al menos 3 archivos flotando alrededor:

1 ...tomcat/conf/context.xml 
2 ...tomcat/Catalina/localhost/myapp.xml 
3 ...tomcat/webapps/myapp/META-INF/context.xml 

¿Cuál es el orden de precedencia?

Respuesta

31

Para los archivos que enumeró, la respuesta simple asumiendo que usted está utilizando todos los valores predeterminados, la orden es (tenga en cuenta la conf/Catalina/localhost):

...tomcat/conf/context.xml 
...tomcat/conf/Catalina/localhost/myapp.xml 
...tomcat/webapps/myapp/META-INF/context.xml 

estoy basando esto (y la siguiente discusión) en el Tomcat 5.5 official documentation for the Context Container.

Entonces, si esa es la respuesta simple, ¿cuál es la respuesta completa?

Tomcat 5.5. se verá en un par de otros lugares para <Context> elementos más allá de los que ha enumerado (consulte los documentos oficiales).

El META-INF/context.xml nunca se abrirá si Tomcat encuentra un Catalina/localhost/myapp.xml. Entonces, si realmente tiene todos los archivos anteriores, es más correcto decir que el META-INF/context.xml es irrelevante, no es que sea la prioridad más baja.

Si dice <Context override="true" ...> en su Catalina/localhost/myapp.xml que hará que sea la prioridad más alta , independientemente de conf/context.xml.Lo mismo en su META-INF\context.xml, siempre que no tenga un Catalina/localhost/myapp.xml (consulte el párrafo anterior).

Además, la parte /Catalina/localhost/ de la ruta en los archivos anteriores en realidad proviene del "predeterminado" conf/server.xml y coincide con el <Engine name="Catalina" defaultHost="localhost">. Si su server.xml utiliza valores diferentes para name y defaultHost en el <Engine>, esa es la estructura de directorios donde se verá Tomcat.

Finalmente, para la parte ...tomcat\ de los archivos que enumeró, Tomcat usa el directorio de la variable de entorno $CATALINA_BASE. Si eso no está establecido, utiliza el directorio de la variable de entorno $CATALINA_HOME, que es el directorio de la instalación de Tomcat. Me gusta configurar y usar $CATALINA_BASE para que no "contamine" mi instalación de Tomcat.

+0

Guau, una respuesta muy detallada e impresionante. Gracias. – Ittai

0

no he encontrado ninguna documentación oficial, pero he observado el orden de carga a ser:

1 tomcat_home/conf/context.xml 
2 tomcat_home/webapps/myapp/META-INF/context.xml 

Donde # 2 es el último que se aplica (por lo que sus valores anulan todos los anteriores, en su caso) .

Nunca he usado la webapp llamada archivos de contexto (su opción n. ° 2).

1

Mi opinión es:

  • tomcat/conf/context.xml es la context.xml "default" cuyos contenidos están superpuestas con las definiciones de contexto de aplicación web. El contexto context.xml predeterminado de mi TC 5 no contiene casi nada, aparte de enumerar el web.xml como recurso supervisado, lo que respalda esta noción.
  • tomcat/Catalina //. Xml se utiliza para la aplicación web. O bien se coloca aquí manualmente, o se toma de su aplicación web en el momento del despliegue ... así que este es el verdadero maestro que TC usa. Si edita, los cambios se leerán el próximo inicio.
  • tomcat/webapps/miaplicacion/META-INF/context.xml - esto se copia en Tomcat/Catalina/a despliegue inicial si se altera esto después de la implementación inicial, no creo que tenga ningún efecto
Cuestiones relacionadas