Deshabilitar escaneo de TLD (Tag Library Descriptors) al iniciar Tomcat

Por defecto, cuando el servidor de aplicaciones Tomcat se inicia, por cada aplicativo que contiene realiza un escaneo completo del directorio WEB-INF y META-INF de la aplicación en busca de archivos *.tld (Tag Library Descriptors). Los TLD son archivos con formato XML que contienen información sobre una librería de Java y todas sus etiquetas. Como comentaba antes, estos archivos deben estar dentro del directorio WEB-INF/ del .war o en el META-INF/.

Si el directorio WEB-INF no ocupa demasiado, que se realice este escaneo en el arranque no es mayor problema, pero si nos encontramos con un directorio que ocupa una gran cantidad de espacio o tiene un número muy elevado de ficheros, el arranque de Tomcat se demorará por mucho tiempo hasta que el escaneo finalice.

Si nuestra aplicación no hace uso de TLD, podemos utilizar en la configuración de nuestro contexto el parámetro «processTlds«, que indica a Tomcat si debe o no realizar un escaneo en el arranque en busca de *.tld

Los valores disponibles son true/false:

<?xml version='1.0' encoding='utf-8'?>
<Context processTlds="false" docBase="/path/a/foo" path="/foo" ...>
</Context>

En el caso de que hagamos uso de TLD, al configurar como «false» esta opción no funcionarán. Debemos definir los TLD en la configuración de la aplicación:

<jsp-config>
<taglib>
<taglib-uri>foo</taglib-uri>
<taglib-location>/WEB-INF/foo.tld</taglib-location>
</taglib>
</jsp-config>

Otras opciones interesantes para acelerar el arranque de Tomcat son desactivar el escaneo de la aplicación y librerías en el arranque con los siguientes parámetros en el archivo de configuración web.xml, concretamente en elemento «<web-app>» (ver documentación de Tomcat para detalles):

metadata-complete="true"

y

<absolute-ordering/>