2010-11-11 18 views
8

El documento 6.0 Tomcat en http://tomcat.apache.org/tomcat-6.0-doc/config/context.html dice:gestión de contexto Tomcat

Sólo si un archivo de contexto no existe para la aplicación en el $CATALINA_BASE/conf/[enginename]/[hostname]/, en un archivo individual en /META-INF/context.xml el interior de los archivos de la aplicación. Si la aplicación web está empaquetada como GUERRA, entonces /META-INF/context.xml se copiará al $CATALINA_BASE/conf/[enginename]/[hostname]/ y se renombrará para que coincida con la ruta de contexto de la aplicación. Una vez que este archivo existe, no será reemplazado si se coloca un WAR nuevo con un /META-INF/context.xml más reciente en la base de datos del host.

Sin embargo, me di cuenta de que si se pone nuevo archivo de la guerra en el directorio webapp, la context.xml en META-INF directorio reemplaza context.xml en $CATALINA_BASE/conf/[enginename]/[hostname].

¿Hay alguna configuración que asegure que context.xml en $CATALINA_BASE/conf/[enginename]/[hostname]/ no se sobrescribe cada vez que se despliega un nuevo archivo de guerra?

Editar: estoy usando autodeploy = "true" A partir de la observación de Josek, entiendo cuando Tomcat ve nuevo archivo de la guerra, se repliega la aplicación de edad (que conduce a la eliminación del archivo de contexto) y despliega el nuevo archivo de la guerra (lo que lleva a la creación de un nuevo archivo de guerra). En ese caso, la información anterior del documento de tomcat no es relevante. La nueva pregunta puede haber alguna situación donde lo anterior puede suceder?

+0

¿Cómo se está implementando en Tomcat? ¿Manualmente o usando un complemento IDE (Eclipse)? – BalusC

+0

Manualmente. Creo el archivo war y lo muevo al directorio webapp. – Hemang

+1

¿Tiene el atributo 'autoDeploy' establecido en el elemento' host' en 'server.xml'? Intenta configurar eso en falso. – matt

Respuesta

1

Si desea evitar la sobrescritura de 'context.xml', puede ir a la url de Tomcat Manager y luego desinstalar la aplicación anterior e instalar la nueva versión de war/ear. De esta manera usted tiene más control sobre el proceso de instalación.

2

Acepto que la documentación es engañosa. Normalmente, este comportamiento es realmente bienvenido, ya que cuando implementa una nueva versión de su aplicación, también desea tener implementado su archivo context.xml actualizado. Si planea editar su archivo context.xml manualmente en su servidor de producción, sugiero omitirlo por completo y copiar su contenido al archivo conf/server.xml.

Un parche/solución rápida a su problema (no lo haría yo mismo) es marcar el archivo context.xml como de solo lectura una vez que se haya desplegado y actualizado la primera vez. De esta forma, Tomcat no puede eliminarlo/actualizarlo.

+1

¿Por qué Tomcat? ¿Por qué abrazas los antipatrones? Consulte el 'tomcat7-maven-plugin' para desplegar su archivo war y un archivo separado context.xml juntos para evitar este problema. http://stackoverflow.com/questions/4032773/why-does-tomcat-replace-context-xml-on-redeploy –

Cuestiones relacionadas