Edwin created CXF-6245:
--------------------------
Summary: Loading non-existent class
org.apache.cxf.xmlbeans.XmlBeansWrapperHelper in WrapperClassOutInterceptor is
causing performance issues
Key: CXF-6245
URL: https://issues.apache.org/jira/browse/CXF-6245
Project: CXF
Issue Type: Bug
Components: JAX-WS Runtime
Affects Versions: 2.7.14
Reporter: Edwin
We have an application with quite a few jars in the classpath. Since the class
org.apache.cxf.xmlbeans.XmlBeansWrapperHelper doesn't exist, the loading of
this class causes the class loader to search the entire classpath which means
scanning each and every jar. This is causing performance issues for us where
under heavy load where several threads get blocked while one thread is
searching all the jars in the classpath.
Here is the thread which is searching the classpath:
java.lang.Thread.State: RUNNABLE
at java.util.zip.ZipFile.getEntry(Native Method)
at java.util.zip.ZipFile.getEntry(ZipFile.java:306)
- locked <0x000000074069ee30> (a java.util.jar.JarFile)
at java.util.jar.JarFile.getEntry(JarFile.java:226)
at
weblogic.utils.classloaders.ZipClassFinder.getSource(ZipClassFinder.java:39)
at
weblogic.utils.classloaders.JarClassFinder.getSource(JarClassFinder.java:50)
at
weblogic.utils.classloaders.AbstractClassFinder.getClassSource(AbstractClassFinder.java:31)
at
weblogic.utils.classloaders.MultiClassFinder.getClassSource(MultiClassFinder.java:59)
at
weblogic.utils.classloaders.MultiClassFinder.getClassSource(MultiClassFinder.java:59)
at
weblogic.utils.classloaders.MultiClassFinder.getClassSource(MultiClassFinder.java:59)
at
weblogic.utils.classloaders.MultiClassFinder.getClassSource(MultiClassFinder.java:59)
at
weblogic.application.utils.CompositeWebAppFinder.getClassSource(CompositeWebAppFinder.java:88)
at
weblogic.utils.classloaders.MultiClassFinder.getClassSource(MultiClassFinder.java:59)
at
weblogic.utils.classloaders.MultiClassFinder.getClassSource(MultiClassFinder.java:59)
at
weblogic.utils.classloaders.CodeGenClassFinder.getClassSource(CodeGenClassFinder.java:28)
at
weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:329)
- locked <0x0000000740a46f30> (a
weblogic.utils.classloaders.ChangeAwareClassLoader)
at
weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:302)
at
weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
- locked <0x0000000740a46f30> (a
weblogic.utils.classloaders.ChangeAwareClassLoader)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
at
weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:180)
at
weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:43)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at
org.apache.cxf.jaxws.interceptors.WrapperClassOutInterceptor.handleMessage(WrapperClassOutInterceptor.java:91)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
and here is one of the many blocked threads:
"[ACTIVE] ExecuteThread: '21' for queue: 'weblogic.kernel.Default
(self-tuning)'" daemon prio=10 tid=0x000000001b424800 nid=0x18b7 waiting for
monitor entry [0x00002b7d62597000]
java.lang.Thread.State: BLOCKED (on object monitor)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at
org.apache.cxf.jaxws.interceptors.WrapperClassOutInterceptor.handleMessage(WrapperClassOutInterceptor.java:91)
at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
Is it possible to remove the code from
org.apache.cxf.xmlbeans.XmlBeansWrapperHelper which is trying to load the
non-existent class org.apache.cxf.xmlbeans.XmlBeansWrapperHelper?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)