Hoy me despisté un poco porque instalé el paquete de Netbeans J2EE que ya incluye ya un servidor GlassFish y Apache Tomcat.

Estuve un rato trasteando con la configuración de Tomcat y me enfadé un poco porque ningún cambio parecía tener efecto; entonces es cuando me di cuenta de que netbeans por defecto establece la variable de entorno catalina_base a un valor distinto de catalina_home.

La instalación de Tomcat incluída en Netbeans crea valores distintos para catalina_home y catalina_base

La prueba del delito, ¡ay netbeans!

Tras ver el problema me costó muy poco toparme con esto que explica de que va esa variable llamada catalina_base.

Si estáis muy perdidos en toda esta jerga, voy a empezar desde el principio. Catalina es el codename del contenedor de servlets del Tomcat, catalina_home es una variable de entorno que debería apuntar al directorio de instalación y configuración del tomcat. Dependiendo del entorno en el que trabajéis (principalmente del sistema operativo y la infraestructura de vuestros sistemas) la instalación del Tomcat estará repartida de una forma u otra, pero el catalina_home va a estar presente en todas las instalaciones (aunque hay formas alternativas de trabajar con Tomcat).

El caso es que el sistema va siempre a buscar las configuraciones del servidor en catalina_home. ¿Siempre?, aquí es donde yo metí la pata… solo usará catalina_home si la variable catalina_base no está definida para nuestro usuario.

Como en mi caso (y en el caso de Netbeans 7) catalina_base estaba definido, el servidor estaba usando la configuración establecida en ese directorio. Como yo estaba cambiando la otra, pues nada tenía efecto.

¿Para qué sirve el catalina_base?

Principalmente para mantener varias instancias de Apache Tomcat con diferentes configuraciones; de esta forma, un mismo servidor puede ofrecer varias configuraciones distintas para varios usuarios (habitualmente esto se usa para que los desarrolladores puedan personalizar su instancia manteniendo la configuración básica del servidor).

Si catalina_base está definida, el servidor utilizará el valor de la variable para buscar los siguientes ficheros (o directorios):

  • conf
  • logs
  • shared
  • webapps
  • work
  • temp

Si tenéis curiosidad, al no establecer catalina_base esta va a tomar el valor de catalina_home, por lo por eso se usará el sistema básico.

Bueno, ya sabéis, si al cambiar algún fichero en catalina_base/conf/ no se actualiza vuestra configuración de servidor puede ser que estéis usando un catalina_home.