[jboss-jira] [JBoss JIRA] (WFLY-12666) JPA jipijapa use optional dependencies instead of modifying the system module

Scott Marlow (Jira) issues at jboss.org
Mon Oct 14 11:12:00 EDT 2019


    [ https://issues.jboss.org/browse/WFLY-12666?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13798850#comment-13798850 ] 

Scott Marlow commented on WFLY-12666:
-------------------------------------

+1 for this idea!

> JPA jipijapa use optional dependencies instead of modifying the system module
> -----------------------------------------------------------------------------
>
>                 Key: WFLY-12666
>                 URL: https://issues.jboss.org/browse/WFLY-12666
>             Project: WildFly
>          Issue Type: Enhancement
>          Components: JPA / Hibernate
>    Affects Versions: 18.0.0.Final
>            Reporter: Brad Maxwell
>            Assignee: Scott Marlow
>            Priority: Major
>
> As per [1] it requires modifying the modules under system/layers/base, these are system modules which users really should not modify.  When applying patches it will complain because the module has been modified.
> It would be better if these modules depended on an optional module which would not exist unless the user configured this.  So for example a user could create modules/org/eclipse/persistence/impl/main/module.xml 
> modules/system/layers/base/org/eclipse/persistence/main/module.xml
> It looks like this almost works with just adding the optional dependency, except there is an exception where it looks like the classloader may not be set correctly for some reason when the module is split into 2.
> {code}
> <module name="org.eclipse.persistence" xmlns="urn:jboss:module:1.5">
> ...
>         <module name="org.eclipse.persistence.impl" optional="true" services="import"/>
> {code}
> {code}
> <?xml version="1.0" encoding="UTF-8"?>
> <module xmlns="urn:jboss:module:1.5" name="org.eclipse.persistence.impl">
>   <resources>
> <!-- you want this jar to be loaded from the system module as it can be packaged potentially
>     <resource-root path="jipijapa-eclipselink-7.3.0.Beta-redhat-00001.jar"/>
> -->
>     <resource-root path="eclipselink.jar">
>       <filter>
>         <exclude path="javax/**"/>
>       </filter>
>     </resource-root>
>   </resources>
>   <dependencies>
>     <module name="javax.api"/>
>     <module name="javax.annotation.api"/>
>     <module name="javax.enterprise.api"/>
>     <module name="javax.persistence.api"/>
>     <module name="javax.transaction.api"/>
>     <module name="javax.validation.api"/>
>     <module name="javax.xml.bind.api"/>
>     <module name="org.antlr"/>
>     <module name="org.dom4j"/>
>     <module name="org.jboss.as.jpa.spi"/>
>     <module name="org.jboss.logging"/>
>     <module name="org.jboss.vfs"/>
>     <module name="org.eclipse.persistence"/> <!-- to see jipijapa-eclipse-link if necessary -->
>   </dependencies>
> </module>
> {code}
> {code}
> Caused by: java.lang.IllegalArgumentException: Object: com.jboss.examples.jpa.model.User at 4fbcb157 is not a known Entity type.
> 	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:4326)
> 	at org.eclipse.persistence.internal.jpa.EntityManagerImpl.persist(EntityManagerImpl.java:596)
> 	at org.jboss.as.jpa.container.AbstractEntityManager.persist(AbstractEntityManager.java:580)
> 	at com.jboss.examples.jpa.TestSingleton.test(TestSingleton.java:29)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> 	at java.lang.reflect.Method.invoke(Method.java:498)
> 	at org.jboss.as.ee.component.ManagedReferenceLifecycleMethodInterceptor.processInvocation(ManagedReferenceLifecycleMethodInterceptor.java:96)
> 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
> 	at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
> 	at org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.delegateInterception(Jsr299BindingsInterceptor.java:79)
> 	at org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.doLifecycleInterception(Jsr299BindingsInterceptor.java:126)
> 	at org.jboss.as.weld.interceptors.Jsr299BindingsInterceptor.processInvocation(Jsr299BindingsInterceptor.java:112)
> 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
> 	at org.jboss.invocation.InterceptorContext$Invocation.proceed(InterceptorContext.java:509)
> 	at org.jboss.weld.module.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:81)
> 	at org.jboss.as.weld.ejb.EjbRequestScopeActivationInterceptor.processInvocation(EjbRequestScopeActivationInterceptor.java:89)
> 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
> 	at org.jboss.as.weld.injection.WeldInjectionInterceptor.processInvocation(WeldInjectionInterceptor.java:53)
> 	at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:422)
> 	at org.jboss.as.ee.component.ManagedReferenceFieldInjectionInterceptorFactory$ManagedReferenceFieldInjectionInterceptor.processInvocation(ManagedReferenceFieldInjectionInterceptorFactory.java:112)
> {code}
> [1] https://docs.jboss.org/author/display/WFLY10/JPA+Reference+Guide#JPAReferenceGuide-UsingEclipseLink



--
This message was sent by Atlassian Jira
(v7.13.8#713008)


More information about the jboss-jira mailing list