axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Francis Hitchens (JIRA)" <axis-...@ws.apache.org>
Subject [jira] [Updated] (AXIS-2852) org.apache.axis.utils.cache.ClassCache not caching classes
Date Sat, 11 Jun 2011 16:54:58 GMT

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

Francis Hitchens updated AXIS-2852:
-----------------------------------


The fix is trivial...

*** ClassCache.java.orig	2011-06-11 11:49:54.643940575 -0500
--- ClassCache.java	2011-06-11 11:51:06.164437871 -0500
***************
*** 83,88 ****
--- 83,89 ----
          if ((jc == null) && (cl != null)) {
              // Try to load the class with the specified classloader
              Class cls = ClassUtils.forName(className, true, cl);
+ 	    registerClass(className, cls);
              jc = new JavaClass(cls);
          }
          return jc;

Results are non-trivial, on a system that was utilizing 70% CPU, after the fix CPU utilization
was reduced by 30%.

> org.apache.axis.utils.cache.ClassCache not caching classes
> ----------------------------------------------------------
>
>                 Key: AXIS-2852
>                 URL: https://issues.apache.org/jira/browse/AXIS-2852
>             Project: Axis
>          Issue Type: Bug
>          Components: Basic Architecture
>    Affects Versions: 1.2, 1.3, 1.4, 1.5
>         Environment: Any
>            Reporter: Francis Hitchens
>
> org.apache.axis.utils.cache.ClassCache.lookup() is used to locate service classes cached
in the classes internal HashMap, classCache. If a class is not found, then lookup() calls
ClassUtils.forName() to load the service class. The service class is then returned to lookup()
and stored in another cache in the JavaClass object.
> At no point is the service class added to the ClassCache HashMap classCache.
> Consequently every single Web Service request, needs to call the class loader to load
and instantiate a service object. Under light load this is not noticeable. Under heavy load
on a WebLogic server this behaviour leads to the JEE container filling up with threads stuck
on "waiting for monitor entry" on the ClassUtils.forName() call as the class loader thread
is synchronized .
> ClassCache.lookup() needs to be modified to add the service class to the classCache HashMap.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


Mime
View raw message