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

Jody Grassel resolved OPENJPA-2288.
-----------------------------------

       Resolution: Fixed
    Fix Version/s: 2.2.1.1
                   2.2.2
                   2.3.0
                   2.1.2
    
> MetaDataRepository should be able to filter classes from other app 
> ClassLoaders in JEE Env
> ------------------------------------------------------------------------------------------
>
>                 Key: OPENJPA-2288
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-2288
>             Project: OpenJPA
>          Issue Type: Bug
>          Components: kernel
>    Affects Versions: 2.1.1, 2.2.0
>            Reporter: Jody Grassel
>            Assignee: Jody Grassel
>             Fix For: 2.1.2, 2.3.0, 2.2.2, 2.2.1.1
>
>         Attachments: OPENJPA-2288-2.1.x.patch
>
>
> When an enhanced Class is loaded by a ClassLoader, its static initializer 
> registers it with metadata in a map in the PCRegistry.  Every 
> MetaDataRepository that registers as a listener with the PCRegistry will 
> receive each class, regardless of whichever ClassLoader it is associated 
> with.  In a JEE environment, this means all Classes from all Applications 
> (including stopped Applications whose ClassLoaders have not yet been Garbage 
> Collected) are received by each MDR instance in the 
> MDR.processRegisteredClasses() method.
> It has been found that there is a problem in the 
> MDR.processRegisteredClasses() method.  While processing each registrant, one 
> of the first things it attempts to do is instantiate the class to determine 
> whether the version level of the enhancer that enhanced the class is 
> compatible with the runtime.  If the class constructor contains application 
> logic that addresses static (session-context sensitive) data and does not 
> gracefully capture the resulting RuntimeException, it can cause the JPA 
> operation responsible for triggering the MDR.pRC() operation to fail.
> As a Compatibility option, I propose enabling a filter that eliminates 
> classes that are not loadable through the envLoader (or Thread Context 
> ClassLoader when envLoader is null).  This will eliminate instantiating 
> Classes from other applications (thus eliminating the execution of potential 
> application custom logic embedded in the constructors) inappropriately.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to