[
https://issues.jboss.org/browse/WFLY-2387?page=com.atlassian.jira.plugin....
]
Scott Marlow edited comment on WFLY-2387 at 2/17/16 8:35 AM:
-------------------------------------------------------------
From JPA 2.1 section 3.5.1 Entity Listeners:
{quote}
...
When invoked from within a Java EE environment, the callback listeners for an entity share
the enter-
prise naming context of the invoking component, and the entity callback methods are
invoked in the
transaction and security contexts of the calling component at the time at which the
callback method is
invoked. [45]
[45] For example, if a transaction commit occurs as a result of the normal termination of
a session bean business method with transac-
tion attribute RequiresNew, the PostPersist and PostRemove callbacks are executed in the
naming context, the transac-
tion context, and the security context of that component.
{quote}
John, I'm also not exactly sure how the entity listener scope impacts this jira
exactly.
was (Author: smarlow):
{quote}
When invoked from within a Java EE environment, the callback listeners for an entity share
the enter-
prise naming context of the invoking component, and the entity callback methods are
invoked in the
transaction and security contexts of the calling component at the time at which the
callback method is
invoked. [45]
[45] For example, if a transaction commit occurs as a result of the normal termination of
a session bean business method with transac-
tion attribute RequiresNew, the PostPersist and PostRemove callbacks are executed in the
naming context, the transac-
tion context, and the security context of that component.
{quote}
John, I'm also not exactly sure how the entity listener scope impacts this jira
exactly.
CDI injection in entity listeners failing
-----------------------------------------
Key: WFLY-2387
URL:
https://issues.jboss.org/browse/WFLY-2387
Project: WildFly
Issue Type: Bug
Components: CDI / Weld, Class Loading, JPA / Hibernate
Affects Versions: 8.0.0.Beta1
Reporter: Emond Papegaaij
Assignee: Scott Marlow
Attachments:
TEST-org.jboss.as.test.integration.ee.injection.support.jpa.EntityListenerInjectionSupportTestCase.xml
When trying to use CDI injection in JPA entity listeners, deployment fails with the
following exception:
{code}
16:16:37,448 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 15)
MSC000001: Failed to start service
jboss.persistenceunit."inject-ear.ear#primary":
org.jboss.msc.service.StartException in service
jboss.persistenceunit."inject-ear.ear#primary": java.lang.IllegalStateException:
JBAS016071: Singleton not set for
org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader@4eeb95dc.
This means that you are trying to access a weld deployment with a Thread Context
ClassLoader that is not associated with the deployment.
at
org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:169)
at
org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:117)
at java.security.AccessController.doPrivileged(Native Method) [rt.jar:1.7.0_25]
at
org.wildfly.security.manager.WildFlySecurityManager.doChecked(WildFlySecurityManager.java:463)
[wildfly-security-manager-1.0.0.Beta3.jar:1.0.0.Beta3]
at
org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1.run(PersistenceUnitServiceImpl.java:178)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[rt.jar:1.7.0_25]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[rt.jar:1.7.0_25]
at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
at org.jboss.threads.JBossThread.run(JBossThread.java:122)
[jboss-threads-2.1.1.Final.jar:2.1.1.Final]
Caused by: java.lang.IllegalStateException: JBAS016071: Singleton not set for
org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl$AggregatedClassLoader@4eeb95dc.
This means that you are trying to access a weld deployment with a Thread Context
ClassLoader that is not associated with the deployment.
at
org.jboss.as.weld.services.ModuleGroupSingletonProvider$TCCLSingleton.get(ModuleGroupSingletonProvider.java:75)
at
org.jboss.as.weld.services.ModuleGroupSingletonProvider$TCCLSingleton.get(ModuleGroupSingletonProvider.java:128)
at org.jboss.weld.Container.instance(Container.java:65)
at org.jboss.weld.manager.BeanManagerImpl.getBeans(BeanManagerImpl.java:563)
at org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:90)
at org.jboss.weld.util.Beans.injectBoundFields(Beans.java:358)
at org.jboss.weld.util.Beans.injectFieldsAndInitializers(Beans.java:369)
at org.jboss.weld.injection.producer.DefaultInjector.inject(DefaultInjector.java:72)
at org.jboss.weld.injection.producer.ResourceInjector.inject(ResourceInjector.java:60)
at org.jboss.weld.injection.producer.DefaultInjector$1.proceed(DefaultInjector.java:66)
at org.jboss.weld.injection.InjectionContextImpl.run(InjectionContextImpl.java:48)
at org.jboss.weld.injection.producer.DefaultInjector.inject(DefaultInjector.java:64)
at
org.jboss.weld.injection.producer.BasicInjectionTarget.inject(BasicInjectionTarget.java:90)
at
org.hibernate.jpa.event.internal.jpa.BeanManagerListenerFactory$BeanMetaData.<init>(BeanManagerListenerFactory.java:82)
at
org.hibernate.jpa.event.internal.jpa.BeanManagerListenerFactory$BeanMetaData.<init>(BeanManagerListenerFactory.java:71)
at
org.hibernate.jpa.event.internal.jpa.BeanManagerListenerFactory.buildListener(BeanManagerListenerFactory.java:57)
at
org.hibernate.jpa.event.internal.jpa.LegacyCallbackProcessor.resolveCallbacks(LegacyCallbackProcessor.java:168)
at
org.hibernate.jpa.event.internal.jpa.LegacyCallbackProcessor.processCallbacksForEntity(LegacyCallbackProcessor.java:71)
at org.hibernate.jpa.event.spi.JpaIntegrator.integrate(JpaIntegrator.java:150)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:310)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1837)
at
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:854)
at
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:847)
at
org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.withTccl(ClassLoaderServiceImpl.java:396)
at
org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:846)
at
org.jboss.as.jpa.hibernate4.TwoPhaseBootstrapImpl.build(TwoPhaseBootstrapImpl.java:44)
at
org.jboss.as.jpa.service.PersistenceUnitServiceImpl$1$1.run(PersistenceUnitServiceImpl.java:151)
... 8 more
{code}
I've created a small showcase of the problem:
https://github.com/papegaaij/listener-injection
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)