[
https://issues.jboss.org/browse/WFLY-12666?page=com.atlassian.jira.plugin...
]
Brian Stansberry commented on WFLY-12666:
-----------------------------------------
You likely need 'export="true"'
{code}
<module name="org.eclipse.persistence.impl" optional="true"
export="true" services="import"/>
{code}
The documented approach adds a resource element, and all the stuff in resource elements
are exported by the module, i.e. made visible to callers as part of the resource set
exposed by the module. But by default the resources exposed by a dependent module are not
made visible to callers. So changing from a resource to a dependent module changes what is
made visible, unless you include 'export="true"'.
I don't know if that's relevant to the exception handling problem you report, but
if the currently documented approach is known to work, not exporting this module amounts
to a significant change in behavior that stands a good chance of causing problems.
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
Attachments: WFLY-12666-overlay.zip
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@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#JPARefer...
--
This message was sent by Atlassian Jira
(v7.13.8#713008)