You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Francois (JIRA)" <ji...@apache.org> on 2012/05/21 13:14:41 UTC

[jira] [Commented] (OPENJPA-758) OpenJPA doesn't find ValueHandlers with an applicable class loader

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

Francois commented on OPENJPA-758:
----------------------------------

Hi, I wrote a custom Strategy and ran into this class loading issue.  

I checked out version 2.2.0.

I found that by adding ‘false’ to the call to getClassLoaderAction inside method:
protected FieldStrategy namedStrategy(FieldMapping field, boolean installHandlers) 
of class:
org.apache.openjpa.jdbc.meta.MappingRepository
my class was able to be loaded:

Class<?> c = JavaTypes.classForName(name, field,
                AccessController.doPrivileged(
                    J2DoPrivHelper.getClassLoaderAction(FieldStrategy.class)), false);

The boolean parameter for ‘mustExist’ should be false in order for issue OpenJPA 758 to get taken into consideration and find the correct class loader in JavaTypes.classForName method .
I would have saved a lot of time if I found this post sooner though...

                
> 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, 1.2.2, 2.0.0, 2.1.1, 2.2.0
>         Environment: WebSphere 6.1, any other, 1.0.3 and probably all existing others
>            Reporter: Jan Dockx
>            Assignee: Heath Thomann
>            Priority: Blocker
>             Fix For: 1.0.5, 1.2.3, 2.0.3, 2.1.2, 2.2.0
>
>         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.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira