openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Harald Wellmann (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OPENJPA-758) OpenJPA doesn't find ValueHandlers with an applicable class loader
Date Sat, 16 Jul 2011 15:55:59 GMT

    [ https://issues.apache.org/jira/browse/OPENJPA-758?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13066450#comment-13066450
] 

Harald Wellmann commented on OPENJPA-758:
-----------------------------------------

I ran into the same issue working with OpenJPA 2.1.0 on OSGi, using Aries JPA 0.3 and Equinox
3.7.0. OpenJPA has to use the persistence bundle classloader instead of its own bundle classloader
to load ValueHandlers. Looking at the attached patch and comparing it to the code in MetaDataRepository.loadPersistentTypesInternal
for loading entity classes from user bundles, I believe this patch would also solve the problem
for OSGi.

> OpenJPA doesn't find ValueHandlers with an applicable class loader
> ------------------------------------------------------------------
>
>                 Key: OPENJPA-758
>                 URL: https://issues.apache.org/jira/browse/OPENJPA-758
>             Project: OpenJPA
>          Issue Type: Improvement
>    Affects Versions: 1.0.3
>         Environment: WebSphere 6.1, any other, 1.0.3 and probably all existing others
>            Reporter: Jan Dockx
>            Assignee: Heath Thomann
>            Priority: Blocker
>         Attachments: OPENJPA-758-1.2.x.patch
>
>   Original Estimate: 72h
>  Remaining Estimate: 72h
>
> We are working with ValueHandlers for enterprise applications that   
> will be deployed on WebSphere, currently 6.1.0.19. We believe that the   
> current OpenJPA implementation has made a less than stellar choice in   
> how to load value handlers, and suggest a change
> ValueHandlers are naturally (or so we find) specific for certain value   
> types, that are often dependent on the semantics of your business, and   
> thus are part of the application, in some way bundled in the ear you   
> are deploying. We do unit testing out of the container with OpenJPA   
> 1.0.3, and everything works like a charm. 
> When we deploy on WebSphere however, nothing works. OpenJPA does not   
> find our value handlers. 
> Luckily OpenJPA is open source :-), so we found with certainty that   
> the reason is that OpenJPA tries to load the value handler with the   
> class loader that loaded the meta information for the property. The   
> class of that object is part of OpenJPA, and inside WebSphere, OpenJPA   
> is loaded with a class loader that has no access to the application   
> code, the code in the ear. So, ClassNotFoundException. Bummer. 
> The long term solution, we believe, is not to use the classloader   
> associated with the meta information for the property (i.e., the   
> OpenJPA class loader), but instead the class loader of the entity for   
> which we are working (which is also reachable via the parameters of   
> the method that does the loading). Using the class loader of the   
> actual value we want to handle is not an option, since the value can   
> be null. The entity however is normally also part of the application,   
> the ear, and cannot be null. 

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message