You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Benjamin Bentmann (JIRA)" <ji...@codehaus.org> on 2009/08/01 13:32:59 UTC

[jira] Created: (MNG-4273) [regression] Internal utility classes of core leak into plugin realm

[regression] Internal utility classes of core leak into plugin realm
--------------------------------------------------------------------

                 Key: MNG-4273
                 URL: http://jira.codehaus.org/browse/MNG-4273
             Project: Maven 2
          Issue Type: Bug
          Components: Class Loading, Plugins and Lifecycle
    Affects Versions: 3.0-alpha-2
            Reporter: Benjamin Bentmann


The current class loader hierarchy of 3.x looks like:
- {{plexus.core}} as root realm with the contents of {{lib/*.jar}}
- {{plugin: g:a:v}} as child of {{plexus.core}}

This basically makes {{lib/*.jar}} completely available to the plugin realm, including classes that we don't want/need to share with plugins because they assist the implementation of the core but not the interop between core and plugin.

The current design gives rise to errors like the linkage error reported in [MNGECLIPSE-1487|https://issues.sonatype.org/browse/MNGECLIPSE-1487]:
- a plugin creates a custom URL class loader (with parent delegation) that contains project dependencies, among others xercesImpl, on top of its plugin realm
- the plugin sets the new class loader as TCCL and invokes a tool that wants to employ a SAX parser
- the parser factory of the JRE will search the TCCL for a suitable SAX parser and will discover xercesImpl in the TCCL
- loading of the xerces parser triggers loading of {{XML11Configuration}} from the TCCL which inherits from {{ParserConfigurationSettings}}
- due to parent delegation, the {{ParserConfigurationSettings}} will however be loaded from {{plexus.core}} which holds xercesMinimal
- xercesMinimal provides an incompatbile version of {{ParserConfigurationSettings}}, which finally crashes the plugin with a linkage error


-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

[jira] Closed: (MNG-4273) [regression] Internal utility classes of core leak into plugin realm

Posted by "Benjamin Bentmann (JIRA)" <ji...@codehaus.org>.
     [ http://jira.codehaus.org/browse/MNG-4273?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Benjamin Bentmann closed MNG-4273.
----------------------------------

         Assignee: Benjamin Bentmann
       Resolution: Fixed
    Fix Version/s: 3.0-alpha-3

Fixed in [r802041|http://svn.apache.org/viewvc?view=rev&revision=802041] with the help of a new classworlds version that allows to selectively import classes from the parent/core realm.

> [regression] Internal utility classes of core leak into plugin realm
> --------------------------------------------------------------------
>
>                 Key: MNG-4273
>                 URL: http://jira.codehaus.org/browse/MNG-4273
>             Project: Maven 2
>          Issue Type: Bug
>          Components: Class Loading, Plugins and Lifecycle
>    Affects Versions: 3.0-alpha-2
>            Reporter: Benjamin Bentmann
>            Assignee: Benjamin Bentmann
>             Fix For: 3.0-alpha-3
>
>
> The current class loader hierarchy of 3.x looks like:
> - {{plexus.core}} as root realm with the contents of {{lib/*.jar}}
> - {{plugin: g:a:v}} as child of {{plexus.core}}
> This basically makes {{lib/*.jar}} completely available to the plugin realm, including classes that we don't want/need to share with plugins because they assist the implementation of the core but not the interop between core and plugin.
> The current design gives rise to errors like the linkage error reported in [MNGECLIPSE-1487|https://issues.sonatype.org/browse/MNGECLIPSE-1487]:
> - a plugin creates a custom URL class loader (with parent delegation) that contains project dependencies, among others xercesImpl, on top of its plugin realm
> - the plugin sets the new class loader as TCCL and invokes a tool that wants to employ a SAX parser
> - the parser factory of the JRE will search the TCCL for a suitable SAX parser and will discover xercesImpl in the TCCL
> - loading of the xerces parser triggers loading of {{XML11Configuration}} from the TCCL which inherits from {{ParserConfigurationSettings}}
> - due to parent delegation, the {{ParserConfigurationSettings}} will however be loaded from {{plexus.core}} which holds xercesMinimal
> - xercesMinimal provides an incompatbile version of {{ParserConfigurationSettings}}, which finally crashes the plugin with a linkage error

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira