I did debug through the invocation flow. It invoked ResourceLocalTransactionStrategy's "getTransaction" method, not the overridden in BeanManagedUserTransactionStrategy. I haven't figured out why "Alternatives" in beans.xml didn't take effect. The current code structure is an ear based gradle multi-project. I'll try it in a simple project tomorrow. Thanks for the reply.
Michael. On Thu, May 1, 2014 at 12:34 AM, Mark Struberg <[email protected]> wrote: > Hi Michael! > > BeanManagedUserTransactionStrategy extends > ResourceLocalTransactionStrategy. > > I suggest you create a breakpoint and debug through what this.class() you > get. > > LieGrue, > strub > > > On Thursday, 1 May 2014, 0:53, Michael Li <[email protected]> wrote: > > I have configured my beans.xml to use BeanManagedUserTransactionStrategy > >(beans.xml content shown below). However, the > >"ResourceLocalTransactionStrategy" is still used from error message. Any > >clue? By the way, I am using JBoss 7.2 and Jta data source. > > > >*** beans.xml *** > > > ><?xml version="1.0" encoding="UTF-8"?> > ><beans xmlns="http://java.sun.com/xml/ns/javaee" > > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > > xsi:schemaLocation="http://java.sun.com/xml/ns/javaee > >http://java.sun.com/xml/ns/javaee/beans_1_0.xsd"> > > <interceptors> > > > > ><class>org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor</class> > > </interceptors> > > <alternatives> > > ><class>org.apache.deltaspike.jpa.impl.transaction.BeanManagedUserTransactionStrategy</class> > > </alternatives> > ></beans> > > > >*** Exception *** > > > >Caused by: java.lang.IllegalStateException: A JTA EntityManager cannot use > >getTransaction() > >at > > >org.hibernate.ejb.AbstractEntityManagerImpl.getTransaction(AbstractEntityManagerImpl.java:1019) > >[hibernate-entitymanager-4.2.0.Final.jar:4.2.0.Final] > >at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > >[rt.jar:1.7.0_51] > >at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) > >[rt.jar:1.7.0_51] > >at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) > >[rt.jar:1.7.0_51] > >at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_51] > >at > > >org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:45) > >[weld-core-1.1.10.Final.jar:2012-10-12 10:00] > >at > > >org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:105) > >[weld-core-1.1.10.Final.jar:2012-10-12 10:00] > >at > > >org.jboss.weld.proxies.EntityManager$-676163098$Proxy$_$$_WeldClientProxy.getTransaction(EntityManager$-676163098$Proxy$_$$_WeldClientProxy.java) > >at > > >org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.getTransaction(ResourceLocalTransactionStrategy.java:308) > >[deltaspike-jpa-module-impl-0.6.jar:0.6] > >at > > >org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.rollbackAllTransactions(ResourceLocalTransactionStrategy.java:274) > >[deltaspike-jpa-module-impl-0.6.jar:0.6] > >at > > >org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:153) > >[deltaspike-jpa-module-impl-0.6.jar:0.6] > >at > > >org.apache.deltaspike.jpa.impl.transaction.TransactionalInterceptor.executeInTransaction(TransactionalInterceptor.java:57) > >[deltaspike-jpa-module-impl-0.6.jar:0.6] > > > > > >-- > >Michael Li > > > > > > > -- Michael Li
