openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jody Grassel (JIRA)" <j...@apache.org>
Subject [jira] [Created] (OPENJPA-2288) MetaDataRepository should be able to filter classes from other app ClassLoaders in JEE Env
Date Mon, 29 Oct 2012 14:56:12 GMT
Jody Grassel created OPENJPA-2288:
-------------------------------------

             Summary: 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.2.0, 2.1.1
            Reporter: Jody Grassel
            Assignee: Jody Grassel


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

Mime
View raw message