javax.xml.bind.DatatypeConverter泄漏类加载器?

Thi*_*kel 8 java tomcat jaxb classloader

我目前正在调查Tomcat 7(带有Oracle JDK 7)上的应用程序的一些类加载器泄漏.一个保持对Web应用程序类加载器的静态引用的类(因此导致类加载器不能在重新部署/重新启动时释放)javax.xml.bind.DatatypeConverter,它存在于系统类加载器中并通过其theConverter字段保持静态引用,以便com.sun.xml.bind.DatatypeConverterImpl从Sun的jaxb中获取-impl包.

有没有人曾经观察过这个问题?任何建议(除了在应用程序关闭时使用反射来清空静态字段)?

Thi*_*kel 13

事实证明,我的一个依赖项(com.sun.jersey:jersey-json)被com.sun.xml.bind:jaxb-impl引入,它负责System Classloader - > Application Classloader引用.排除这种依赖性解决了这个问题(因为JDK 7附带了一个合理的JAXB实现,它将在System CL中引用,这很好).