[ 
http://issues.apache.org/jira/browse/AXIS-2470?page=comments#action_12377446 ] 

srinivas srirangan commented on AXIS-2470:
------------------------------------------

Hi Bjorn

We are using Axis 1.2RC3. But we compared the code between 1.2RC3 and 1.3, and 
found there we no differences for the below class: 
org.apache.axis.configuration.EngineConfigurationFactoryFinder

1) Initially the performance testing on our server showed very high CPU usage 
on the following methods: 

java.util.zip.ZipFile.getEntry
sun.misc.URLClassPath.getLoader
java.util.zip.ZipFile.open

The above profiling was done using HPJMeter and Eprof on HP-UX. 

2) So, we tried a unit testing on the server by executing this call once and 
running a process called tusc on the HP-UX, (tusc is similar to truss on 
Solaris) and found that for every outbound web service call made by Axis, the 
following jar files were opened and read. 
* xercesImpl.jar
* xalan.jar
* axis.jar 
* dom3-xercesImpl.jar 
* piccolo.jar 
* xerces.jar 
* xercesImpl.jar 

3) Then, I tried to debug more on my local machine by modifying the source file 
for java.util.zip.ZipFile.getEntry method and using the prepend bootclasspath 
option from java as shown below:

-Xbootclasspath/p:C:/javasrc; 

Now, we found that the services.hasNext() call in the below code snippet caused 
all the above-mentioned jar files to be opened and read for a specific property 
called org.apache.axis.EngineConfigurationFactory. (we can see this from the 
trace above) 

Code snippet from org.apache.axis.configuration.EngineConfigurationFactoryFinder
======================================================================

                        ResourceClassIterator services = 
AxisProperties.getResourceClassIterator(mySpi);
                        EngineConfigurationFactory factory = null;
                        while (factory == null  &&  services.hasNext()) {
                          try {
                            Class service = 
services.nextResourceClass().loadClass();
                            /* service == null
                             * if class resource wasn't loadable
                             */
                            if (service != null) {
                                factory = newFactory(service, 
newFactoryParamTypes, params);
                            }
                          } catch (Exception e) {
                            // there was an exception creating the factory
                            // the most likely cause was the JDK 1.4 problem
                            // in the discovery code that requires servlet.jar
                            // to be in the client classpath.  For now, fall
                            // through to the next factory
                          }

4) Also, we tried to override this discovery mechanism by running the following 
system property options:
  * run with 
axis.EngineConfigFactory=org.apache.axis.configuration.EngineConfigurationFactoryDefault
 
  * run with 
org.apache.axis.EngineConfigurationFactory=org.apache.axis.configuration.EngineConfigurationFactoryDefault
 

Still these jar files were being read on the services.hasNext() invocation. 


5) I looked at the patch provided for the Bug - 385 
(http://issues.apache.org/jira/browse/AXIS-385). I was not sure why this code 
is removed from the later releases. 

Does this help? Please let me know if you need any more details. Thanks.


> performance issue with discovery for 
> org.apache.axis.EngineConfigurationFactory
> -------------------------------------------------------------------------------
>
>          Key: AXIS-2470
>          URL: http://issues.apache.org/jira/browse/AXIS-2470
>      Project: Apache Axis
>         Type: Bug

>   Components: Serialization/Deserialization
>     Versions: 1.2RC3
>  Environment: HP-UX, Apache Axis 1.2 RC3, Websphere 6.0 
>     Reporter: srinivas srirangan

>
> This is reference to a performance problem that we are currently facing and 
> silmilar to the bug 385 (http://issues.apache.org/jira/browse/AXIS-385). 
> Our trace below shows that the property named 
> "org.apache.axis.EngineConfigurationFactory" is being searched on all the xml 
> related jar files. 
> We tried running the tests with the both the below options:
> 1) run with 
> axis.EngineConfigFactory=org.apache.axis.configuration.EngineConfigurationFactoryDefault
>  
> 2) run with 
> org.apache.axis.EngineConfigurationFactory=org.apache.axis.configuration.EngineConfigurationFactoryDefault
> Still we get an identical results. Our final result shows high CPU 
> utilization on the java.util.zip.ZipFile.getEntry() method and the root cause 
> being the jar files being read for the each outbound web service call. 
> Does the discovery mechanism does this by default? 
> Can you please shed some lights on this issue? 
> trace:
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry 
> Name: 
> org/apache/commons/discovery/resource/names/DiscoverNamesInAlternateManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: 
> org/apache/commons/discovery/resource/names/DiscoverNamesInAlternateManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: 
> org/apache/commons/discovery/resource/names/DiscoverNamesInAlternateManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry 
> Name: 
> org/apache/commons/discovery/resource/names/DiscoverNamesInManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: 
> org/apache/commons/discovery/resource/names/DiscoverNamesInManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: 
> org/apache/commons/discovery/resource/names/DiscoverNamesInManagedProperties$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry 
> Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: 
> META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: 
> META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\dom3-xercesImpl.jar Entry 
> Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\piccolo.jar Entry Name: 
> META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xerces.jar Entry Name: 
> META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry 
> Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: 
> META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: 
> META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\dom3-xercesImpl.jar Entry 
> Name: META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\piccolo.jar Entry Name: 
> META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xerces.jar Entry Name: 
> META-INF/services/org.apache.axis.EngineConfigurationFactory
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry 
> Name: org/apache/commons/discovery/resource/names/DiscoverMappedNames$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: 
> org/apache/commons/discovery/resource/names/DiscoverMappedNames$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: 
> org/apache/commons/discovery/resource/names/DiscoverMappedNames$1.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry 
> Name: org/apache/axis/configuration/EngineConfigurationFactoryDefault.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: 
> org/apache/axis/configuration/EngineConfigurationFactoryDefault.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: 
> org/apache/axis/configuration/EngineConfigurationFactoryDefault.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xercesImpl.jar Entry 
> Name: org/apache/axis/configuration/EngineConfigurationFactoryDefault.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\xalan.jar Entry Name: 
> org/apache/axis/configuration/EngineConfigurationFactoryDefault.class
> File Name: C:\viewstore\sriranga_best_2.06\best\lib\axis.jar Entry Name: 
> org/apache/axis/configuration/EngineConfigurationFactoryDefault.class

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to