[ 
https://issues.apache.org/jira/browse/CXF-6245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Edwin updated CXF-6245:
-----------------------
    Description: 
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 WrapperClassOutInterceptor which is 
trying to load the non-existent class 
org.apache.cxf.xmlbeans.XmlBeansWrapperHelper?

  was:
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?


> 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 WrapperClassOutInterceptor 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)

Reply via email to