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

Reply via email to