Saltar al contenido

java.lang.IllegalStateException al recargar Tomcat

Vivian, parte de este equipo, nos ha hecho el favor de crear esta crónica porque conoce muy bien el tema.

Solución:

Quiero darte un par de opciones. Puedes probarlo. Cualquier opción puede satisfacer su demanda.

  1. Restart your tomcat and apache server porque después de mucho tiempo de uso, mantiene la versión anterior de su aplicación.
  2. limpia tu gato temp directorio y restart
  3. Como dice por error,

El eventual seguimiento de la pila posterior es causado por un error generado con fines de depuración, así como para intentar finalizar el subproceso que provocó el acceso ilegal, y no tiene impacto funcional.

Puede ser la causa real de que en este momento esté en modo de depuración y no borre el hilo en ejecución. así que elimine su punto de interrupción y ejecútelo sin depurar

  1. Si su código contiene algún tipo de subproceso que no finaliza correctamente, este tipo de error puede ocurrir. Que tienes init() metodo pero no destroy() entonces este tipo de error puede ocurrir. Para obtener más información, puede seguir el enlace: http://www.javaspecialists.eu/archive/Issue056.html

  2. Si el webapp has stopped, or is stoppingeso significa que el .war archivo o WEB-INF/web.xml la marca de tiempo cambió y es posible que la aplicación web se esté recargando. Verifique que la marca de tiempo esté bien o no.

  3. Para apagarlo, establecer recargable=”false” en la definición de contexto de su aplicación. puede ser de gato server.xml. En la solución de detalles: el server.xml de tomcat del Contexto recargable se establece en false. Por ejemplo:

Context path="/expert" docBase="expert" debug="0" reloadable ="false"/>

La solución es fácil, siempre que el server.xml de tomcat en reloadable = "true" into false en la línea, pero hacerlo perdería la ventaja de la implementación en caliente, y para el desarrollo no es muy conveniente, simplemente cámbielo o no. Este error no importa.

Principio de error:

La razón es porque el reinicio de Tomcat, porque el subproceso anterior de Tomcat no se ha cerrado por completo, reiniciar Tomcat informará esta excepción, pero esto no afecta el uso normal, solo salta a las personas molestas anormales. Usado hibernate, spring u otros componentes grandes, cuando un sistema de aplicación WEB tiene mucha clase,

si giraste el Tomcat reloadable = true, luego, cada vez que cambien los documentos relevantes, Tomcat detiene la aplicación web y libera memoria, y luego vuelve a cargar la aplicación web. puede ser un gran proyecto. Entonces, siempre pensamos que si solo hay una cierta clase de funciones sobrecargadas, nuestro depurador cumplirá en gran medida.

ACTUALIZACIÓN: para problemas relacionados con el código

Primero, quiero decirte que te he dado algunas soluciones para la base tomcat. Ahora Quiero darte una solución para la base del código.. ¿Podría verificar su código con este problema? Siga la URL.

  1. http://www.coderanch.com/t/660126/Wiki/Illegal-State-Exception

ACTUALIZACIÓN: para problemas relacionados con MySQL

  1. Hay 2 problemas.

    • Esta instancia de aplicación web ya se ha detenido. No puede cargar java.net.BindException.

    • Esta instancia de aplicación web ya se detuvo. No se pudo cargar com.mysql.jdbc.

Esto se debe a que el Controlador MySQL JDBC en la solicitud bajo el WEB-INF/lib directorio, en el relanzamiento de su cargado dos veces, siempre que se pueda copiar a %TOMCAT_HOME%/lib puede resolver el problema. Podemos solucionar estas dos anomalías de los controladores MySQL desde el WEB-INF/lib carpeta movida a %TOMCAT_HOME%/lib.

  1. Sospecho que esto podría estar sucediendo después de reiniciar la aplicación web, donde está inactiva durante un breve período de tiempo. Entonces algunos finalize() El método en el código probablemente esté tratando de hacer una limpieza demasiado tarde. Si eso está o no en su código o en el controlador MySQL, no puedo decirlo. Definitivamente solo debe tener una versión de un jar en un directorio a la vez. Es posible que desee actualizarlo a la última (5.1.38 en este momento) en caso de que se haya solucionado algo que pueda afectarlo. (El número 9 se copia de @ WhiteFang34)

Enlace relacionado para 9: tomcat 6.0.24 Excepción: no se pudo cargar com.mysql.jdbc.SQLError

Creo que la causa raíz de este problema es que algo está filtrando JDBC Connection objetos.

Estos objetos son en realidad instancias de com.mysql.jdbc.ConnectionImpl … que es una clase con un finalize(). Normalmente, la finalización de objetos arregla las conexiones filtradas. En este caso, parece que la secuencia de eventos es la siguiente:

  • el GC se ejecuta después de que la aplicación web se haya cerrado
  • se encuentra que un objeto ConnectionImpl es inalcanzable
  • el método finalize() del objeto intenta cerrar la conexión de la base de datos MySQL… lo que implica enviar un mensaje al servidor
  • cuando el envío del mensaje falla por algún motivo y el código de nivel de comunicaciones intenta crear una excepción llamando com.mysql.jdbc.SQLError.createCommunicationsException
  • que intenta crear una excepción reflexivamente …

El último paso está fallando porque está tratando de usar el cargador de clases de la aplicación web para la aplicación web… que se cerró. Aparentemente, esto se detecta mediante una verificación que tiene como objetivo ayudar a los programadores a diagnosticar las aplicaciones web que no se cierran correctamente.

La mejor solución es rastrear la fuente de la Connection fuga(s) y arreglarlo. Si Connection los objetos no se filtraron, entonces se cerrarían mientras el cargador de clases de la aplicación web todavía estaba activo.

Alternativamente, puede simplemente desactivar el cheque, como se describe en la respuesta de @Skywalker.

Reseñas y valoraciones

Agradecemos que desees sustentar nuestra misión fijando un comentario y dejando una valoración te lo agradecemos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *