2012-08-03 13 views
5

Cuando undeploy mi solicitud de Tomcat, veo por debajo de los errores en los registros de Tomcat. ¿Cual podría ser el problema? Cómo debería solucionar este problemaTomcat tiros java.lang.UnsupportedOperationException cuando mi aplicación es sin desplegar

---------------------------- Tomcat log ---------------- -----------

SEVERE: The web application [/dfsmonitor] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [[email protected]]) and a value of type [com.sun.xml.stream.XMLReaderImpl] (value [[email protected]]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak. 
Jul 1, 2012 10:18:20 PM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap 
SEVERE: Unable to determine string representation of value of type [com.sun.xml.stream.writers.XMLStreamWriterImpl] 
java.lang.UnsupportedOperationException 
at com.sun.xml.stream.writers.XMLStreamWriterImpl.entrySet(XMLStreamWriterImpl.java:2134) 
at java.util.AbstractMap.toString(AbstractMap.java:478) 
at org.apache.catalina.loader.WebappClassLoader.clearThreadLocalMap(WebappClassLoader.java:2433) 
at org.apache.catalina.loader.WebappClassLoader.clearReferencesThreadLocals(WebappClassLoader.java:2349) 
at org.apache.catalina.loader.WebappClassLoader.clearReferences(WebappClassLoader.java:1921) 
at org.apache.catalina.loader.WebappClassLoader.stop(WebappClassLoader.java:1833) 
at org.apache.catalina.loader.WebappLoader.stop(WebappLoader.java:740) 
at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4913) 
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:932) 
at org.apache.catalina.startup.HostConfig.undeployApps(HostConfig.java:1357) 
at org.apache.catalina.startup.HostConfig.stop(HostConfig.java:1328) 
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:326) 
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142) 
at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1094) 
at org.apache.catalina.core.ContainerBase.stop(ContainerBase.java:1106) 
at org.apache.catalina.core.StandardEngine.stop(StandardEngine.java:468) 
at org.apache.catalina.core.StandardService.stop(StandardService.java:604) 
at org.apache.catalina.core.StandardServer.stop(StandardServer.java:788) 
at org.apache.catalina.startup.Catalina.stop(Catalina.java:662) 
at org.apache.catalina.startup.Catalina.start(Catalina.java:629) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 
Jul 1, 2012 10:18:20 PM org.apache.catalina.loader.WebappClassLoader clearThreadLocalMap 
SEVERE: The web application [/dfsmonitor] created a ThreadLocal with key of type [java.lang.ThreadLocal] (value [[email protected]]) and a value of type [com.sun.xml.stream.writers.XMLStreamWriterImpl] (value [Unknown]) but failed to remove it when the web application was stopped. This is very likely to create a memory leak. 
Jul 1, 2012 10:18:20 PM org.apache.coyote.http11.Http11AprProtocol destroy 
INFO: Stopping Coyote HTTP/1.1 on http-8080 

Hágame saber cuál podría ser el problema.

Respuesta

0

Puede evitar colocar instancias de XMLStreamWriterImpl en locales de subprocesos, de ese modo al apagar Tomcat no tendría problemas para eliminarlos.

Pero aparte de implementar el método de destrucción en un Servlet, registrar ganchos de apagado en un entorno como Spring y hacer un seguimiento de todos los valores que haya establecido en threadlocals para poder eliminarlos luego del cierre, no lo hago Creo que realmente debe preocuparse por esto. Aunque es extraño que usted, o el código que está usando, esté almacenando este valor en un threadlocal, generalmente los escritores de flujo se crean y destruyen rápidamente y no persisten por mucho tiempo.

+0

Tengo exactamente el mismo problema. De hecho, uso algunos ThreadLocals, pero no hay ningún "XMLStreamWriterImpl" en uso. Para ser más preciso, la palabra "XMLStreamWriterImpl" no aparece en absoluto en mi código. Entonces no entiendo por qué de la Excepción. ¿Algunas ideas? – Asturio

Cuestiones relacionadas