[
https://issues.apache.org/jira/browse/AXIS2-2968?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12527526
]
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: 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
> 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]