[
https://issues.apache.org/jira/browse/XALANJ-2600?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Gary Gregory closed XALANJ-2600.
--------------------------------
Resolution: Fixed
Assignee: Gary Gregory (was: Steven J. Hathaway)
Fix Version/s: 2.7.3
Patch applied, thank you.
build smoketest OK
build smoketest.xsltc OK
{noformat}
{noformat}
> Memory leak in TransformerIdentityImpl
> --------------------------------------
>
> Key: XALANJ-2600
> URL: https://issues.apache.org/jira/browse/XALANJ-2600
> Project: XalanJ2
> Issue Type: Bug
> Security Level: No security risk; visible to anyone(Ordinary problems in
> Xalan projects. Anybody can view the issue.)
> Components: Xalan
> Affects Versions: 2.7.2
> Reporter: Samuel Brezáni
> Assignee: Gary Gregory
> Fix For: 2.7.3
>
> Attachments: TransformerIdentityImpl.java.patch, xalan_memory_leak.jpg
>
>
> Hi.
> I found a serious memory leak in the Xalan library. It is caused by the
> {{org.apache.xalan.transformer.TransformerIdentityImpl}} class.
> I try to explain mechanism how the memory leak is caused:
> Web application is deployed on SAP NetWeaver AS with Java 1.6 (1.6.0_95). The
> application uses Spring WS library but also another libraries with dependency
> to Xalan library.
> When the web service is invoked, then the {{TransformerIdentityImpl}} class
> is used. This class is used because it's extends
> {{javax.xml.transform.Transformer}} and it is created by Java core method -
> {{javax.xml.transform.TransformerFactory.newInstance()}}.
> A class {{com.sun.xml.internal.messaging.saaj.soap.EnvelopeFactory}} is used
> for handling web services. This object also contains cache ({{ParserPool}})
> with {{SAXParser}} objects
> ({{com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl}}). As key for this
> cache is used an application class loader.
> {{EnvelopeFactory}} object and {{SAXParserImpl}} objects are loaded by a
> system class loader, but {{TransformerIdentityImpl}} class is loaded by an
> application class loader.
> During handling of web service a method
> {{org.apache.xalan.transformer.TransformerIdentityImpl.transform(Source,
> Result)}} is invoked. This method uses {{SAXParser}} as a reader. *Problem is
> that this method register self for handling properties (eg:
> {{"http://xml.org/sax/handlers/DeclHandler"}}) but after processing method
> doesn't unregister self from {{SAXParser}}*. It means that objects loaded by
> the system class loaded has dependencies on objects loaded by the application
> class loader.
> Objects are still loaded after application is undeployed because cached
> {{SAXParser}} references {{TransformerIdentityImpl}}.
> I prepared very simple patch to fix this problem. In the attachment is also
> picture which demonstrates situation.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]