axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ann Robinson (JIRA)" <>
Subject [jira] Commented: (AXIS2-2968) Out-Of-Memory error on server side - Use of wsdl4j WSDLDefinition
Date Fri, 14 Sep 2007 15:07:32 GMT


Ann Robinson commented on AXIS2-2968:

I have been working with the WSDL4J team on ways to reduce the memory footprint of the WSDL
definition implementation.

For Axis2, I would like to propose using a wrapper on the WSDLDefinition 
         - to keep changes to the WSDL4J implementation from impacting users
           (especially those components that expect to access a WSDLDefinition
            from the parameter include list in the AxisService)
         - to allow certain environments to take advantage of changes in WSDL4J,
           (eg. new APIs, new steps, or catch exceptions) to reduce memory footprint
         - to preserve current behavior 

The difference in this solution from the previously proposed solution is that 
         - no resources will be released
         - no need to try to reload the original WSDL (so we don't have to worry about
            custom WSDL locators or ?WSDL support)

This wrapper on the WSDLDefinition would do the following:
         - implement the wsdl definition interface and delegate the methods to the actual
           WSDL4J wsdl definition implementation that is being wrapped
         - provide tracing for debug situations
         - perform new steps to memory footprint when needed for certain environments
                - - this could be controlled via a configuration parameter so that the default
                     behavior is the same as current behavior


> Out-Of-Memory error on server side - Use of wsdl4j WSDLDefinition
> -----------------------------------------------------------------
>                 Key: AXIS2-2968
>                 URL:
>             Project: Axis 2.0 (Axis2)
>          Issue Type: Bug
>          Components: kernel
>            Reporter: Ann Robinson
>            Assignee: Ann Robinson
>            Priority: Critical
>         Attachments: patch_01.txt
> 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:
For additional commands, e-mail:

View raw message