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

John Ross updated ARIES-1019:
-----------------------------

    Attachment: aries1019.patch

Proposed patch.

Register with the highest possible service ranking to avoid 
ClassNotFoundException caused by interfaces added by earlier weaving hooks that 
are not yet visible to the bundle class loader.
                
> JPA weaving hook must be called before proxy weaving hook.
> ----------------------------------------------------------
>
>                 Key: ARIES-1019
>                 URL: https://issues.apache.org/jira/browse/ARIES-1019
>             Project: Aries
>          Issue Type: Bug
>          Components: JPA, Proxy
>            Reporter: John Ross
>         Attachments: aries1019.patch
>
>
> Caused by: <openjpa-2.2.2-SNAPSHOT-r422266:1446295 nonfatal general error> 
> org.apache.openjpa.util.GeneralException: An error occurred while enhancing 
> itemjpa.ItemJPA. Exception message: java.lang.ClassNotFoundException: 
> org.apache.aries.proxy.weaving.WovenProxy
>     at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:578)
>     at 
> org.apache.openjpa.enhance.PCClassFileTransformer.transform0(PCClassFileTransformer.java:153)
>     at 
> org.apache.openjpa.enhance.PCClassFileTransformer.transform(PCClassFileTransformer.java:126)
>     at 
> org.apache.openjpa.persistence.PersistenceProviderImpl$ClassTransformerImpl.transform(PersistenceProviderImpl.java:290)
>     at 
> org.apache.aries.jpa.container.weaving.impl.WrappingTransformer.transform(WrappingTransformer.java:80)
>     at 
> org.apache.aries.jpa.container.weaving.impl.JPAWeavingHook.weave(JPAWeavingHook.java:71)
>     ... 48 more
> Caused by: java.lang.IllegalArgumentException: 
> java.lang.ClassNotFoundException: org.apache.aries.proxy.weaving.WovenProxy
>     at serp.util.Strings.toClass(Strings.java:164)
>     at serp.util.Strings.toClass(Strings.java:108)
>     at serp.bytecode.BCClass.getDeclaredInterfaceTypes(BCClass.java:740)
>     at org.apache.openjpa.enhance.PCEnhancer.run(PCEnhancer.java:537)
>     ... 53 more 
> This issue occurs when the Apache Aries Proxy weaving hook gets called before 
> the Apache Aries JPA weaving hook. Proxy weaves the class with the WovenProxy 
> interface and adds the necessary dynamic package imports. JPA then gets 
> called and uses PCEnhancer which, in turn, calls 
> BCClass.getDeclaredInterfaceTypes, which ultimately calls Class.forName using 
> the woven interface's name. The class loader is from the bundle whose class 
> is being woven. Per the OSGi spec, dynamic imports do not take effect until 
> after the entire weaving process is complete. Consequently, the bundle's 
> class loader does not yet have visibility to the class.
> One solution would be to ensure that the jpa weaving hook is always called 
> before the proxy weaving hook using the service ranking property.

--
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