Error en tomcat 10 , configurando escuchador.




Cuando se cambia de la versión Tomcat 9 a la versión Tomcat 10, eventualmente se puede presentar un error que se presenta y se visualiza en catalina.log como:

org.apache.catalina.core.StandardContext.listenerStart Error configurando escuchador de aplicación de clase o algo similar este error se produce porque algunas librerías de Tomcat 9 están desarrolladas y/o apuntan teniendo en cuenta Javax , mientras que en Tomcat 10 están desarrolladas o apuntas a Jakarta.
En mi caso se presentó de forma puntual con la libreria DWR que sirve de bridge entre el frontt-end y el backend. Pero puede ser cualquiera otra.

El cambio de Javax a Jakarta en Tomcat 10 es el resultado de una serie de eventos importantes en el mundo Java EE (ahora Jakarta EE). Aquí están las razones principales:
  1. Transferencia de Java EE a la Fundación Eclipse: En 2017, Oracle decidió transferir Java EE a la Fundación Eclipse para que fuera desarrollado como un proyecto de código abierto.
  2. Problemas de marca registrada: Oracle mantuvo los derechos de la marca "Java" y el prefijo "javax". Esto significaba que la Fundación Eclipse no podía usar libremente estos términos en futuras versiones.
  3. Nuevo nombre: Jakarta EE: La plataforma fue renombrada como "Jakarta EE" bajo la Fundación Eclipse.
  4. Necesidad de diferenciación: Para diferenciar claramente entre las versiones anteriores (controladas por Oracle) y las nuevas versiones (controladas por Eclipse Foundation), se decidió cambiar el prefijo de los paquetes.
  5. Evolución de la plataforma: Este cambio también marcó un punto de inflexión para introducir cambios más significativos en la plataforma sin las restricciones impuestas por la compatibilidad con versiones anteriores.
  6. Claridad legal: El cambio a jakarta elimina cualquier ambigüedad legal sobre los derechos de uso y modificación de las APIs.
  7. Fomentar la innovación: Al hacer un cambio tan significativo, se abrió la puerta para que la comunidad replanteara y mejorara partes de la especificación sin estar atada a decisiones de diseño antiguas.
  8. Versión de transición: Jakarta EE 8 mantuvo el prefijo Javax para facilitar la transición, pero a partir de Jakarta EE 9 (que es lo que implementa Tomcat 10), se hizo el cambio a Jakarta.

Este cambio, aunque disruptivo a corto plazo, se considera necesario para el futuro a largo plazo de la plataforma. Permite una mayor libertad en el desarrollo y evolución de las especificaciones bajo el nuevo gobierno de la Fundación Eclipse.

Para los desarrolladores y las empresas, esto significa un período de transición en el que deben actualizar sus aplicaciones y dependencias. Sin embargo, también promete un futuro más dinámico y dirigido por la comunidad para la plataforma Java empresarial.

 Aquí la palabra disruptivo en realidad significa que se avecina para el desarrollador un proceso normalmente de cambios importante.

El inconveniente aunque se manifiesta como error del escuchador (LISTEN)  , en realidad es un problema de compatibilidad entre las librerías usadas, lo cual implica un cambio forzoso a mediano plano de las librerías que se ven comprometidas.

Aunque hay formas de paliar el problema de momento como puede ser 

1. Encapsular la aplicación en un docker,

2. Usar librerías de migración proporcionadas por Apache

3, Mantener la versión de Tomcat en 9.0

A mi juicio, no hacen mas que dilatar el problema de fondo y es que las librerías problema ya no están soportas y solo queda buscar alternativas que si lo estén o cambiar el paradigma del desarrollado que las usa.

En mi caso por ejemplo como uso DWR , para integrar el front-end con el backend pues la solución es simple cambiar el modelo DWR a un modelo basado en API.  

Ver detalles para implementar la migración de tomcat 9 a tomcat 10 para evitar el problema:

https://cac9999.blogspot.com/2023/09/migrar-tomcat-90-tomcat-10.html

Comentarios

Entradas populares