You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commons-dev@ws.apache.org by "Rich Scheuerle (JIRA)" <ji...@apache.org> on 2008/04/29 22:50:55 UTC

[jira] Resolved: (WSCOMMONS-315) StAXUtils loads a singleton XML*Factory. It should load a singleton XML*Factory per classloader

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

Rich Scheuerle resolved WSCOMMONS-315.
--------------------------------------

    Resolution: Fixed

Added trace and additional fallback logic: 652102

> StAXUtils loads a singleton XML*Factory.  It should load a singleton XML*Factory per classloader
> ------------------------------------------------------------------------------------------------
>
>                 Key: WSCOMMONS-315
>                 URL: https://issues.apache.org/jira/browse/WSCOMMONS-315
>             Project: WS-Commons
>          Issue Type: Bug
>          Components: AXIOM
>            Reporter: Rich Scheuerle
>            Assignee: Rich Scheuerle
>
> Problem Description:
> ------------------------------
> The XMLInputFactory.newInstance() method uses the current classloader to determine which version of STAX XMLInputFactory to load.
> The current StAXUtils.getXMLInputFactory() overrides this behavior and uses the classloader of StAXUtils instead of the current classloader.
> Unfortunately this makes it impossible for Axiom to use the STAX version defined by a different classloader.
> Note: This issue is equally applicable to XMLOutputFactory.  
> Problem Solution:
> -------------------------
> The solution is to change StAXUtils.getXMLInputFactory to return a STAX XMLInputFactory for the current classloader.
> This will comply with the expected STAX behavior.
> A weak map of (key=ClassLoader, value = XMLInputFactory) will be maintained to try and preserve a singleton factory per classloader.
> There will be two ways for users to trigger the old behavior.
> 1) A new method will be added to change the policy:
> /**
>      * Set the policy for how to maintain the XMLInputFactory and XMLOutputFactory
>      * @param value (if false, then one singleton...if true...then singleton per class loader 
>      *  (default is true)
>      */
>     public static void setFactoryPerClassLoader(boolean value) ;
> 2) New methods will be added to programatically request the policy.
>     ie.  getXMLInputFactory(boolean isFactoryPerClassLoaderPolicy);
> Note: The same solution will be applied for XMLOutputFactory.  

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