[ 
https://issues.apache.org/jira/browse/AXIOM-468?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Andreas Veithen resolved AXIOM-468.
-----------------------------------
    Resolution: Fixed
      Assignee: Andreas Veithen

> StAXUtils may cause class loader leak
> -------------------------------------
>
>                 Key: AXIOM-468
>                 URL: https://issues.apache.org/jira/browse/AXIOM-468
>             Project: Axiom
>          Issue Type: Bug
>          Components: API
>    Affects Versions: 1.2.15
>            Reporter: Andreas Veithen
>            Assignee: Andreas Veithen
>            Priority: Minor
>             Fix For: 1.3.0
>
>
> By default, StAXUtils keep per class loader maps of XMLInputFactory and 
> XMLOutputFactory instances (where the key is the thread context class 
> loader). These maps are implemented as 
> WeakHashMap<ClassLoader,XMLInputFactory> and 
> WeakHashMap<ClassLoader,XMLOutputFactory>. This may cause a class loader leak 
> if the XMLInputFactory or XMLOutputFactory instance has a strong reference to 
> the ClassLoader used as key. That case occurs in two scenarios:
> 1. A StAX implementation is loaded by a class loader that is not the class 
> loader that loads StAXUtils or one of its parent class loaders, and that 
> class loader is set as the context class loader when StAXUtils is used. Note 
> that this is basically the use case for which the per class loader maps were 
> designed.
> 2. For whatever reason, the XMLInputFactory/XMLOutputFactory instance keeps a 
> strong reference to the thread context class loader set when the instance was 
> created. In that scenario, if StAXUtils is used with a thread context class 
> loader that is set to any class loader other than the one that loaded 
> StAXUtils or one of its parents, then StAXUtils will prevent that class 
> loader from being garbage collected. This type of behavior has been reported 
> for the default StAX implementation in the Oracle JRE (see 
> http://markmail.org/message/2kfstgjckrgiimmt). Woodstox is probably not 
> affected.
> The scenario for which the per class loader feature was designed is probably 
> very rare. As shown above, that scenario is always prone to class loader 
> leaks. Therefore this feature should probably be removed without replacement, 
> and StAXUtils should always load the StAX implementation visible to its own 
> class loader. Note that this mode is already supported, but it is not the 
> default.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@ws.apache.org
For additional commands, e-mail: dev-h...@ws.apache.org

Reply via email to