Out-Of-Memory error on server side - Use of wsdl4j WSDLDefinition
-----------------------------------------------------------------

                 Key: AXIS2-2968
                 URL: https://issues.apache.org/jira/browse/AXIS2-2968
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: kernel
            Reporter: Ann Robinson
            Assignee: Ann Robinson
            Priority: Critical
             Fix For: 1.3


In some server-side environments, there is an out-of-memory problem when      
attempting to handle a large number of JAXWS-based web service applications.  
                                                                              
In the test scenario that fails, the server is attempting to load and start   
100 web service applications. A variety of heap sizes was tried to see if     
a heap size for the server could be found to work, ranging from 1 GB to 4 GB. 
Increasing the heap size did not work - the out-of-memory error continued to  
occur.                                                                        

In analyzing the java heap dumps, one of the biggest consumers of the memory  
is with the wsdl4j WSDLDefinition objects.  In the test scenario, the         
wsdl4j-related objects consumed about a quarter to a third of the entire heap.
                                                                              
The WSDLDefinition object is a very heavy-weight object, much of which stems  
from its use of the xerces dom objects as underlying support, particularly    
for the schemas.                                                              
                                                                              
One area to investigate is the saving of the WSDLDefinition as a Parameter    
in the AxisService's ParameterInclude list so that, if some component needs   
to utilize the WSDLDefinition object, it can be accessed via the AxisService  
object.                                                                       
                                                                              
Is it possible to reduce the utilization of the WSDLDefinition?               
Some ideas are:                                                               
(a) releasing it when it is no longer needed                                  
         - this might not be possible to determine                            
                                                                              
(b) putting a wrapper on the WSDLDefinition                                   
         - so that the WSDLDefinition,or a portion of the WSDLDefinition,     
           can be released                                                    
         - but if the WSDLDefinition is accessed after it was released,       
           the wrapper can reload the WSDLDefinition transparently to the     
           user                                                               
                                                                              
(c) create a layer for caching wsdl-related information                       
         - this would allow for releasing memory based on some algorithm      
           and/or interface that could indicate what's no longer needed       
                                                                              


-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to