Dear community,
I am using DeltaSpike Data Module 1.7.2 (some problem with 1.8.2) in a
project together with JPA and Vaadin 8.4.4. The proyectis deployed to
WildFly 13.0.0.Final by means of a ear file.
Structure of the ear:
* EAR File
|- lib/
| |- deltaspike jars (including
"deltaspike-jpa-module-impl-1.7.2.jar")
| `- persistence.jar >> includes JPA, deltaspike
Repositories
|- ejbServices.jar >> it uses the deltaspike Repositories
`- vaadinApp.war >> it uses the ejbServices
If I didn't set any TransactionStrategy it is deployed and I can even use a
repository to execute a "findAll()" successfully. But if I set
ContainerManagedTransactionStrategy to ContainerManagedTransactionStrategy
I get this exception at deplyment time:
------------------------
08:49:44,060 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2)
MSC000001: Failed to start service
jboss.deployment.unit."gesteven-app-0.0.1-SNAPSHOT.ear".WeldStartService:
org.jboss.msc.service.StartException in service
jboss.deployment.unit."gesteven-app-0.0.1-SNAPSHOT.ear".WeldStartService:
Failed to start service
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1728)
at
org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1556)
at
org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at
org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
at
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
at
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
at java.lang.Thread.run(Thread.java:748)
Caused by: org.jboss.weld.exceptions.DefinitionException: Exception List
with 1 exceptions:
Exception 0 :
java.lang.IllegalStateException: Can't find class
org.apache.deltaspike.jpa.impl.transaction.ContainerManagedTransactionStrategy
which is configured for
org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy
at
org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension.activateGlobalAlternatives(ExcludeExtension.java:303)
at
org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension.vetoBeans(ExcludeExtension.java:174)
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
at
org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:144)
at
org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330)
at
org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:123)
at
org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308)
at
org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286)
at
org.jboss.weld.bootstrap.events.ContainerLifecycleEvents.fireProcessAnnotatedType(ContainerLifecycleEvents.java:203)
at
org.jboss.weld.bootstrap.events.ContainerLifecycleEvents.fireProcessAnnotatedType(ContainerLifecycleEvents.java:174)
at
org.jboss.weld.bootstrap.BeanDeployer.processAnnotatedTypes(BeanDeployer.java:166)
at
org.jboss.weld.bootstrap.BeanDeployment.createTypes(BeanDeployment.java:219)
at
org.jboss.weld.bootstrap.WeldStartup.startInitialization(WeldStartup.java:415)
at
org.jboss.weld.bootstrap.WeldBootstrap.startInitialization(WeldBootstrap.java:79)
at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:95)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1736)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1698)
at
org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1556)
at
org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at
org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1985)
at
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1487)
at
org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1378)
at java.lang.Thread.run(Thread.java:748)
at
org.jboss.weld.bootstrap.events.ContainerLifecycleEvents.fireProcessAnnotatedType(ContainerLifecycleEvents.java:210)
at
org.jboss.weld.bootstrap.events.ContainerLifecycleEvents.fireProcessAnnotatedType(ContainerLifecycleEvents.java:174)
at
org.jboss.weld.bootstrap.BeanDeployer.processAnnotatedTypes(BeanDeployer.java:166)
at
org.jboss.weld.bootstrap.BeanDeployment.createTypes(BeanDeployment.java:219)
at
org.jboss.weld.bootstrap.WeldStartup.startInitialization(WeldStartup.java:415)
at
org.jboss.weld.bootstrap.WeldBootstrap.startInitialization(WeldBootstrap.java:79)
at org.jboss.as.weld.WeldStartService.start(WeldStartService.java:95)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1736)
at
org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1698)
... 6 more
Suppressed: java.lang.IllegalStateException: Can't find class
org.apache.deltaspike.jpa.impl.transaction.ContainerManagedTransactionStrategy
which is configured for
org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy
at
org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension.activateGlobalAlternatives(ExcludeExtension.java:303)
at
org.apache.deltaspike.core.impl.exclude.extension.ExcludeExtension.vetoBeans(ExcludeExtension.java:174)
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.jboss.weld.injection.StaticMethodInjectionPoint.invoke(StaticMethodInjectionPoint.java:95)
at
org.jboss.weld.injection.MethodInvocationStrategy$SpecialParamPlusBeanManagerStrategy.invoke(MethodInvocationStrategy.java:144)
at
org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:330)
at
org.jboss.weld.event.ExtensionObserverMethodImpl.sendEvent(ExtensionObserverMethodImpl.java:123)
at
org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:308)
at
org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:286)
at
org.jboss.weld.bootstrap.events.ContainerLifecycleEvents.fireProcessAnnotatedType(ContainerLifecycleEvents.java:203)
... 14 more
------------------------
I have double checked the ear file and
"deltaspike-jpa-module-impl-1.7.2.jar" is in its lib folder... Why is it
saying it can't find the class
org.apache.deltaspike.jpa.impl.transaction.ContainerManagedTransactionStrategy?????
Any ideas?? Could the TransactionStrategy be declared in a different way?
** Below is the rest of my configuraion **
===========
persistence.jar
===========
>> pom.xml dependency:
<dependency>
<groupId>org.apache.deltaspike.modules</groupId>
<artifactId>deltaspike-data-module-api</artifactId>
<version>1.7.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.deltaspike.modules</groupId>
<artifactId>deltaspike-data-module-impl</artifactId>
<version>1.7.2</version>
<scope>runtime</scope>
</dependency>
>> META-INF/apache-deltaspike.properties:
globalAlternatives.org.apache.deltaspike.jpa.spi.transaction.TransactionStrategy=org.apache.deltaspike.jpa.impl.transaction.ContainerManagedTransactionStrategy
>> META-INF/beans.xml:
this file is empty
>> META-INF/persistence.xml:
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="
http://xmlns.jcp.org/xml/ns/persistence
http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="myapp-persistence" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<jta-data-source>java:jboss/datasources/myAppDS</jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties>
<property name="hibernate.dialect"
value="org.hibernate.dialect.PostgreSQLDialect" />
</properties>
</persistence-unit>
</persistence>
-----------------------------------------
>> The EntityManager defined in EntityManagerProducer.java:
public class EntityManagerProducer {
@PersistenceUnit
private EntityManagerFactory emf;
@Produces // you can also make this @RequestScoped
public EntityManager create()
{
return emf.createEntityManager();
}
public void close(@Disposes EntityManager em)
{
if (em.isOpen())
{
em.close();
}
}
}
======================
It seems to be a classloader problem, but as far as
"deltaspike-jpa-module-impl-1.7.2.jar" is inside the lib folder of the ear
file, i can't figure out why it can't find it...
Any help will be appreciated, thanks in advance!!