2011-01-19 14 views
17

Estoy probando Tomcat 7.0 y Servlet API 3.0.Deshabilitar el procesamiento de anotaciones, pero habilitar la función de fragmentos web en servlet api 3.0 (Tomcat7)

Tenía una aplicación para Servlet API 2.5. Así que edité web.xml para configurarlo para Servlet API 3.0. Después del cambio, el tiempo de inicio de Tomcat aumentó en 14 segundos.

Así que configuré <web-app metadata-complete="true" ... y la hora de inicio de Tomcat volvió a la normalidad, porque tomcat no analiza todas las clases en busca de anotaciones. Esto es bueno, pero la función web-fragment.xml también está deshabilitada.

Me pregunto si es posible deshabilitar el análisis de anotaciones de Tomcat, pero para habilitar el procesamiento de web-fragment.xml.

+1

aumentó en 14 segundos a cuánto? Si está comenzando 3 minutos, 14 segundos están bien. – Bozho

Respuesta

3

Ambos fragmentos y anotaciones son metadatos de la aplicación. Por lo tanto, los metadatos completos se aplican tanto para el procesamiento de anotación como para el procesamiento de fragmentos. Si el metadata-completo está configurado para web.xml, tanto el proceso de anotación como el procesamiento de fragmentos están deshabilitados.

Pero, los metadatos completos también se pueden establecer en web-fragments.xml. Entonces, uno puede hacer un procesamiento selectivo de anotaciones y fragmentos.

Habilitación de metadatos completa en web.xml y deshabilitar en web-fragments.xml procesará fragmentos pero desactiva el procesamiento de anotación de clases bajo web-fragments.xml

+0

Lo probé, parece que no funciona en Tomcat 7.0.22. Por cierto, no entiendo muy bien, si habilito metadata-complete en web.xml, el servidor de aplicaciones omitirá el proceso de anotación y el procesamiento de fragmentos en conjunto. En este caso, ¿cómo podría funcionar la configuración en web-fragments.xml? Ni siquiera se puede analizar, ¿verdad? – cn1h

+1

No debe establecer metadata-complete en web.xml. Deshabilitará los fragmentos web y el proceso de anotación. Debe habilitarlo en web-fragments.xml. Por favor, lea la respuesta cuidadosamente. –

+0

Hola Ramesh, gracias por tu rápida reproducción. Acabo de probar, establecer metadata-complete en false (o simplemente tomar el valor predeterminado) en web.xml y establecer metadata-complete en true en web-fragment.xml hará que Tomcat omita el procesamiento de la anotación, pero solo para esa web -Fragmento jar, ¿verdad? ¿Tomcat todavía escanea otros frascos en WEB-INF/lib? – cn1h

3

Considere el uso de elemento de 'absoluto de pedidos' en tu web.xml Servlet API 3.0 Final Spec describe su uso en la sección 8.2.2 "Pedido de web.xml y web-fragment.xml".

Puede especificar los exactas web fragmentos para ser procesados, deshabilitar el procesamiento de las anotaciones de las clases en el tarro de Web-fragmento ('metadatos completa' en la web fragmento de la lista) y, por supuesto, excluye otros frascos de procesamiento por este tipo de inclusión de fragmento de web.

Cuestiones relacionadas