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.
Restart your tomcat and apache server
porque después de mucho tiempo de uso, mantiene la versión anterior de su aplicación.- limpia tu gato
temp
directorio yrestart
- 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
-
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 nodestroy()
entonces este tipo de error puede ocurrir. Para obtener más información, puede seguir el enlace: http://www.javaspecialists.eu/archive/Issue056.html -
Si el
webapp has stopped, or is stopping
eso significa que el.war
archivo oWEB-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. -
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.
- http://www.coderanch.com/t/660126/Wiki/Illegal-State-Exception
ACTUALIZACIÓN: para problemas relacionados con MySQL
-
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
.
- 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.