Solución:
Problema resuelto después de reiniciar Tomcat y Apache, Tomcat estaba almacenando en caché una versión anterior de la aplicación.
En resumen: esto sucede probablemente cuando está implementando aplicaciones web en caliente. Por ejemplo, su servidor de desarrollo ide + vuelve a implementar una guerra en caliente. Los subprocesos que se han creado anteriormente todavía se están ejecutando. Pero mientras tanto, su cargador de clases / contexto no es válido y se enfrenta a la excepción IllegalAccessException / IllegalStateException porque su aplicación web original (el antiguo entorno de ejecución) se ha vuelto a implementar.
Entonces, como se indica aquí, un reinicio no resuelve permanentemente este problema. En cambio, es mejor encontrar / implementar un Thread Pool administrado, s.th. de esta manera para manejar la terminación de subprocesos de manera adecuada. En JavaEE, utilizará estos ManagedThreadExeuctorServices. Una opinión y una referencia similares aquí.
Ejemplos de esto son el EvictorThread de Apache Commons Pool, que “limpia” las instancias agrupadas de acuerdo con la configuración del grupo (máximo inactivo, etc.).
Sospecho que esto ocurre después de un intento de anular la implementación de su aplicación. ¿Alguna vez mataste ese hilo que has inicializado durante el init()
proceso ? Haría esto en el correspondiente destroy()
método.