hi ove, #1 DELTASPIKE-473 is about javax.transaction.Transactional and not about org.apache.deltaspike.jpa.api.transaction.Transactional. #2 for jta you can use BeanManagedUserTransactionStrategy (or EnvironmentAwareTransactionStrategy for a mixed environment).
regards, gerhard http://www.irian.at Your JSF/JavaEE powerhouse - JavaEE Consulting, Development and Courses in English and German Professional Support for Apache MyFaces 2014-03-08 9:50 GMT+01:00 Ove Ranheim <[email protected]>: > But I want to use JTA, that's why I include the Narayana and > JTA-and-Hiberante. > > > On 08 Mar 2014, at 08:58, Thomas Hug <[email protected]> wrote: > > > Hi Ove, > > > > By default, the DS JPA module comes with a RESOURCE_LOCAL transaction > > strategy (which the Data module is reusing). Your persistence.xml states > a > > JTA transaction type though, so you have to change the transaction > strategy > > according to [1]. > > > > Hope that helps, > > Thomas > > > > [1] http://deltaspike.apache.org/jpa.html#jta-support > > > > > > On Fri, Mar 7, 2014 at 11:39 PM, Ove Ranheim <[email protected]> wrote: > > > >> Hi Gerhard, > >> > >> Ivan Vasyliev already made a great example that demonstrate this issue > >> (btw: https://issues.apache.org/jira/browse/DELTASPIKE-473). > >> > >> Please have a look at: > >> https://github.com/vasilievip/cdi-jpa-jta-generic-dao > >> > >> To properly demonstrate DS behaviour, you must disable the Spring stuff, > >> hence you need to: > >> > >> pom.xml (comment out) > >> > >> <!-- > >> <dependency> > >> <groupId>org.springframework.data</groupId> > >> <artifactId>spring-data-jpa</artifactId> > >> <version>${spring-data-jpa.version}</version> > >> </dependency> > >> --> > >> > >> SprintDataProductDAO.java (comment out): > >> > >> public interface SpringDataProductDAO > >> /* extends JpaRepository<Product, Long> */ > >> { > >> > >> } > >> > >> ProductService.java (comment out) > >> > >> // @Inject > >> // SpringDataProductDAO springProductDAO; > >> > >> // @Transactional > >> // public List<Product> findAll() { > >> // assert springProductDAO != null; > >> // List<Product> products = new ArrayList<Product>(); > >> // Iterator<Product> productIterator = > >> springProductDAO.findAll().iterator(); > >> // while (productIterator.hasNext()) { > >> // products.add(productIterator.next()); > >> // } > >> // return products; > >> // } > >> // > >> // @Transactional > >> // public Long save(Product product) { > >> // assert springProductDAO != null; > >> // springProductDAO.save(product); > >> // return product.getId(); > >> // } > >> > >> Exception stracktrace: > >> > >> Tests run: 2, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 3.841 > sec > >> <<< FAILURE! - in > com.javafiction.common.persistence.test.ProductServiceTest > >> testFindAll(com.javafiction.common.persistence.test.ProductServiceTest) > >> Time elapsed: 1.808 sec <<< ERROR! > >> org.apache.deltaspike.data.api.QueryInvocationException: Failed calling > >> Repository: > >> > [Repository=com.acme.persistence.DeltaspikeProductDAO,entity=com.acme.model.Product,method=save,exception=class > >> java.lang.IllegalStateException,message=A JTA EntityManager cannot use > >> getTransaction() > >> at > >> > org.hibernate.jpa.spi.AbstractEntityManagerImpl.getTransaction(AbstractEntityManagerImpl.java:1368) > >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > >> at > >> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > >> at > >> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > >> at java.lang.reflect.Method.invoke(Method.java:606) > >> at > >> > com.javafiction.common.persistence.resources.JtaEntityManagerProxy.invoke(JtaEntityManagerProxy.java:45) > >> at com.sun.proxy.$Proxy63.getTransaction(Unknown Source) > >> at > >> > org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.getTransaction(ResourceLocalTransactionStrategy.java:308) > >> at > >> > org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.rollbackAllTransactions(ResourceLocalTransactionStrategy.java:274) > >> at > >> > org.apache.deltaspike.jpa.impl.transaction.ResourceLocalTransactionStrategy.execute(ResourceLocalTransactionStrategy.java:153) > >> at > >> > org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeTransactional(TransactionalQueryRunner.java:72) > >> at > >> > org.apache.deltaspike.data.impl.tx.TransactionalQueryRunner.executeQuery(TransactionalQueryRunner.java:54) > >> at > >> > org.apache.deltaspike.data.impl.handler.QueryHandler.invoke(QueryHandler.java:80) > >> at com.sun.proxy.$Proxy61.save(Unknown Source) > >> at com.acme.services.ProductService.save2(ProductService.java:72) > >> // <= this is the real issue > >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > >> at > >> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > >> at > >> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > >> at java.lang.reflect.Method.invoke(Method.java:606) > >> at > >> > org.apache.webbeans.intercept.AbstractInvocationContext.proceed(AbstractInvocationContext.java:110) > >> at > >> > org.apache.webbeans.intercept.InterceptorInvocationContext.realProceed(InterceptorInvocationContext.java:72) > >> at > >> > org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:66) > >> at > >> > com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorBase.invokeInOurTx(TransactionalInterceptorBase.java:89) > >> at > >> > com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorRequired.intercept(TransactionalInterceptorRequired.java:52) > >> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > >> at > >> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > >> at > >> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > >> at java.lang.reflect.Method.invoke(Method.java:606) > >> at > >> > org.apache.webbeans.component.InterceptorBean.intercept(InterceptorBean.java:151) > >> at > >> > org.apache.webbeans.intercept.InterceptorInvocationContext.proceed(InterceptorInvocationContext.java:62) > >> at > >> > org.apache.webbeans.intercept.DefaultInterceptorHandler.invoke(DefaultInterceptorHandler.java:138) > >> at > >> > com.acme.services.ProductService$$OwbInterceptProxy0.save2(com/acme/services/ProductService.java) > >> at > >> > com.javafiction.common.persistence.test.ProductServiceTest.testFindAll(ProductServiceTest.java:56) > >> > >> > >> Thanks to Ivan for making this demo! > >> > >> I'm after exact equivalent of this test case. The test case fails on: > >> deltaspikeProductDAO.save(product); > >> > >> The demo demonstrates that it works with Spring Data, but breaks with > >> DeltaSpike Data. > >> > >> Cheers, > >> Ove > >> > >> On 07 Mar 2014, at 21:46, Gerhard Petracek <[email protected]> > >> wrote: > >> > >>> hi ove, > >>> > >>> please provide a link to a demo-app which illustrates the issue. > >>> > >>> regards, > >>> gerhard > >>> > >>> http://www.irian.at > >>> > >>> Your JSF/JavaEE powerhouse - > >>> JavaEE Consulting, Development and > >>> Courses in English and German > >>> > >>> Professional Support for Apache MyFaces > >>> > >>> > >>> > >>> 2014-03-07 21:27 GMT+01:00 Ove Ranheim <[email protected]>: > >>> > >>>> public class TestBean { > >>>> > >>>> @Inject > >>>> @PartsRepository > >>>> private EntityManager em; > >>>> > >>>> @Transactional > >>>> public void transaction(TestEntity entity) { > >>>> em.persist(entity); > >>>> } > >>>> } > >>>> > >>>> and in test-case: > >>>> > >>>> @Inject > >>>> private TestBean testBean; > >>>> > >>>> @Test > >>>> public void testMe() throws Exception { > >>>> testBean.transaction(m); // <== exception message below > >>>> } > >>>> > >>>> stacktrace: > >>>> > >>>> java.lang.NullPointerException: null > >>>> at > >>>> > >> > org.jboss.weld.injection.AbstractResourceInjection.getResourceReference(AbstractResourceInjection.java:44) > >>>> at > >>>> > >> > org.jboss.weld.injection.AbstractResourceInjection.injectResourceReference(AbstractResourceInjection.java:53) > >>>> at org.jboss.weld.util.Beans.injectEEFields(Beans.java:331) > >>>> at > >>>> > >> > org.jboss.weld.injection.producer.ResourceInjector.inject(ResourceInjector.java:59) > >>>> 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.jboss.weld.bean.ManagedBean.create(ManagedBean.java:150) > >>>> at > >>>> > >> > org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:69) > >>>> at > >>>> > >> > org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:733) > >>>> at > >>>> > >> > org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:789) > >>>> at > >>>> > >> > org.jboss.weld.injection.FieldInjectionPoint.inject(FieldInjectionPoint.java:92) > >>>> 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.jboss.weld.bean.ManagedBean.create(ManagedBean.java:150) > >>>> at > >>>> > >> > org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:69) > >>>> at > >>>> > >> > org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:733) > >>>> at > >>>> > >> > org.jboss.weld.bean.interceptor.CdiInterceptorFactory.create(CdiInterceptorFactory.java:45) > >>>> at > >>>> > >> > org.jboss.weld.interceptor.proxy.InterceptionContext.initInterceptorInstanceMap(InterceptionContext.java:93) > >>>> at > >>>> > >> > org.jboss.weld.interceptor.proxy.InterceptionContext.of(InterceptionContext.java:68) > >>>> at > >>>> > >> > org.jboss.weld.interceptor.proxy.InterceptionContext.forNonConstructorInterception(InterceptionContext.java:63) > >>>> at > >>>> > >> > org.jboss.weld.injection.producer.InterceptorApplyingInstantiator.newInstance(InterceptorApplyingInstantiator.java:53) > >>>> at > >>>> > >> > org.jboss.weld.injection.producer.BasicInjectionTarget.produce(BasicInjectionTarget.java:85) > >>>> at > >>>> > >> > org.jboss.weld.injection.producer.BeanInjectionTarget.produce(BeanInjectionTarget.java:183) > >>>> at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:149) > >>>> at > >>>> org.jboss.weld.context.AbstractContext.get(AbstractContext.java:96) > >>>> at > >>>> > >> > org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:98) > >>>> at > >>>> > >> > org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:78) > >>>> at > >>>> > >> > com.parts.persistence.test.repository.TestBean$Proxy$_$$_WeldClientProxy.transaction(Unknown > >>>> Source) > >>>> at > >>>> > >> > com.parts.persistence.test.repository.PartsRepositoryTest.testMe(PartsRepositoryTest.java:141) > >>>> > >>>> > >>>> This stacktrace doesn't provide me much lead to what's wrong. Is > there a > >>>> way to unwrap what's going on behind the scene: > >>>> > >>>> at > >>>> > >> > com.parts.persistence.test.repository.TestBean$Proxy$_$$_WeldClientProxy.transaction(Unknown > >>>> Source) > >>>> at > >>>> > >> > com.parts.persistence.test.repository.PartsRepositoryTest.testMe(PartsRepositoryTest.java:141) > >>>> > >>>> > >>>> Cheers, > >>>> Ove > >>>> > >>>> On 07 Mar 2014, at 20:11, Gerhard Petracek < > [email protected]> > >>>> wrote: > >>>> > >>>>> you can use a separated class and annotate it (or its methods) with > >>>>> @Transactional -> inject it in your test and delegate to it. > >>>>> > >>>>> regards, > >>>>> gerhard > >>>>> > >>>>> http://www.irian.at > >>>>> > >>>>> Your JSF/JavaEE powerhouse - > >>>>> JavaEE Consulting, Development and > >>>>> Courses in English and German > >>>>> > >>>>> Professional Support for Apache MyFaces > >>>>> > >>>>> > >>>>> > >>>>> 2014-03-07 19:56 GMT+01:00 Ove Ranheim <[email protected]>: > >>>>> > >>>>>> Hi Gerhard, > >>>>>> > >>>>>> Thanks for your prompt response. > >>>>>> > >>>>>> I use shrinkwrap desc: > >>>>>> > >>>>>> > >>>> > >> > .getOrCreateInterceptors().clazz(TransactionalInterceptor.class.getName()) > >>>>>> > >>>>>> > >>>> > >> > .clazz(com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorMandatory.class.getName()) > >>>>>> > >>>>>> > >>>> > >> > .clazz(com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorNever.class.getName()) > >>>>>> > >>>>>> > >>>> > >> > .clazz(com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorNotSupported.class.getName()) > >>>>>> > >>>>>> > >>>> > >> > .clazz(com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorRequired.class.getName()) > >>>>>> > >>>>>> > >>>> > >> > .clazz(com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorRequiresNew.class.getName()) > >>>>>> > >>>>>> > >>>> > >> > .clazz(com.arjuna.ats.jta.cdi.transactional.TransactionalInterceptorSupports.class.getName()).up() > >>>>>> > >>>>>> > >>>> > >> > .getOrCreateAlternatives().clazz(BeanManagedUserTransactionStrategy.class.getName()).up() > >>>>>> > >>>>>> According to #2: anything missing? > >>>>>> > >>>>>> Roger #1. If I use RequestScoped instead, I get this error: > >>>>>> > >>>>>> testMe(com.parts.persistence.test.repository.PartsRepositoryTest) > >> Time > >>>>>> elapsed: 0.071 sec <<< ERROR! > >>>>>> java.lang.NullPointerException: null > >>>>>> at > >>>>>> > >>>> > >> > org.jboss.weld.injection.AbstractResourceInjection.getResourceReference(AbstractResourceInjection.java:44) > >>>>>> at > >>>>>> > >>>> > >> > org.jboss.weld.injection.AbstractResourceInjection.injectResourceReference(AbstractResourceInjection.java:53) > >>>>>> at org.jboss.weld.util.Beans.injectEEFields(Beans.java:331) > >>>>>> at > >>>>>> > >>>> > >> > org.jboss.weld.injection.producer.ResourceInjector.inject(ResourceInjector.java:59) > >>>>>> 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.jboss.weld.bean.ManagedBean.create(ManagedBean.java:150) > >>>>>> at > >>>>>> org.jboss.weld.context.AbstractContext.get(AbstractContext.java:96) > >>>>>> at > >>>>>> > >>>> > >> > org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:733) > >>>>>> at > >>>>>> > >>>> > >> > org.jboss.weld.injection.producer.AbstractMemberProducer.getReceiver(AbstractMemberProducer.java:128) > >>>>>> at > >>>>>> > >>>> > >> > org.jboss.weld.injection.producer.AbstractMemberProducer.produce(AbstractMemberProducer.java:148) > >>>>>> at > >>>>>> > >>>> > >> > org.jboss.weld.bean.AbstractProducerBean.create(AbstractProducerBean.java:183) > >>>>>> at > >>>>>> org.jboss.weld.context.AbstractContext.get(AbstractContext.java:96) > >>>>>> at > >>>>>> > >>>> > >> > org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:98) > >>>>>> at > >>>>>> > >>>> > >> > org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:99) > >>>>>> at > >>>>>> > >>>> > >> > org.jboss.weld.proxies.EntityManager$893098196$Proxy$_$$_WeldClientProxy.persist(Unknown > >>>>>> Source) > >>>>>> at > >>>>>> > >>>> > >> > com.parts.persistence.test.repository.PartsRepositoryTest.testMe(PartsRepositoryTest.java:137) > >>>>>> > >>>>>> Appreciate you help! > >>>>>> > >>>>>> Cheers, > >>>>>> ove > >>>>>> > >>>>>> On 07 Mar 2014, at 19:47, Gerhard Petracek < > >> [email protected]> > >>>>>> wrote: > >>>>>> > >>>>>>> hi ove, > >>>>>>> > >>>>>>> #1 currently only std. scopes are supported by ContextControl. > >>>>>>> #2 it will work once TransactionalInterceptor gets called > >>>>>>> > >>>>>>> regards, > >>>>>>> gerhard > >>>>>>> > >>>>>>> http://www.irian.at > >>>>>>> > >>>>>>> Your JSF/JavaEE powerhouse - > >>>>>>> JavaEE Consulting, Development and > >>>>>>> Courses in English and German > >>>>>>> > >>>>>>> Professional Support for Apache MyFaces > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> 2014-03-07 19:12 GMT+01:00 Ove Ranheim <[email protected]>: > >>>>>>> > >>>>>>>> Hi, > >>>>>>>> > >>>>>>>> I'm not able to start the TransactionScoped in due time. I'm doing > >> an > >>>>>>>> experiment on using ds-jpa together with JTA-and-Hibernate ( > >>>>>>>> > https://github.com/jbosstm/quickstart/tree/master/jta-and-hibernate > >> ). > >>>>>>>> > >>>>>>>> The persistence.xml uses JTA and binds to a JdbcDataSource bound > to > >>>>>> JNDI. > >>>>>>>> If I use the TransactionManager directly, it all works. However, > >> when > >>>> I > >>>>>> use > >>>>>>>> the BeanManagedUserTransactionStrategy it fails. I'd like to make > >> use > >>>> of > >>>>>>>> the @Transactional and @TransactionScope. > >>>>>>>> > >>>>>>>> Here are some code snippets. > >>>>>>>> > >>>>>>>> public static void bindNamingAndTransactionService() throws > >>>>>> Exception { > >>>>>>>> if(txInitialized) return; > >>>>>>>> // Start JNDI server > >>>>>>>> NAMING_BEAN.start(); > >>>>>>>> > >>>>>>>> // Bind JTA implementation with default names > >>>>>>>> JNDIManager.bindJTAImplementation(); > >>>>>>>> > >>>>>>>> // Bind JTA implementation with JBoss names. Needed for JTA > 1.2 > >>>>>>>> implementation. > >>>>>>>> // See https://issues.jboss.org/browse/JBTM-2054 > >>>>>>>> // resolve naming parse container for comp and bind > >>>>>>>> NAMING_BEAN.getNamingInstance().createSubcontext(new > >>>>>>>> NamingParser().parse("jboss")); > >>>>>>>> > >>>>>>>> > >>>>>> > >>>> > >> > jtaPropertyManager.getJTAEnvironmentBean().setTransactionManagerJNDIContext("java:/jboss/TransactionManager"); > >>>>>>>> jtaPropertyManager.getJTAEnvironmentBean() > >>>>>>>> > >>>>>>>> > >>>>>> > >>>> > >> > .setTransactionSynchronizationRegistryJNDIContext("java:/jboss/TransactionSynchronizationRegistry"); > >>>>>>>> JNDIManager.bindJTAImplementation(); > >>>>>>>> > >>>>>>>> JdbcDataSource dataSource = new JdbcDataSource(); > >>>>>>>> dataSource.setURL("jdbc:h2:~/partsdb;MVCC=TRUE"); > >>>>>>>> dataSource.setUser("sa"); > >>>>>>>> dataSource.setPassword(""); > >>>>>>>> > >>>>>>>> InitialContext context = new InitialContext(); > >>>>>>>> context.bind("java:/jboss/primaryDS", dataSource); > >>>>>>>> txInitialized = true; > >>>>>>>> } > >>>>>>>> > >>>>>>>> EntityManagerProducer: > >>>>>>>> > >>>>>>>> @Produces > >>>>>>>> @PartsRepository > >>>>>>>> @TransactionScoped > >>>>>>>> protected EntityManager createEntityManager() { > >>>>>>>> return entityManagerFactory.createEntityManager(); > >>>>>>>> } > >>>>>>>> > >>>>>>>> @Produces > >>>>>>>> public EntityManagerFactory entityManagerFactory() { > >>>>>>>> if (entityManagerFactory == null) { > >>>>>>>> try { > >>>>>>>> if (!txInitialized) bindNamingAndTransactionService(); > >>>>>>>> } catch (Exception e) { > >>>>>>>> throw new RuntimeException(e); > >>>>>>>> } > >>>>>>>> return Persistence.createEntityManagerFactory("primary"); > >>>>>>>> } > >>>>>>>> throw new UnsupportedOperationException(); > >>>>>>>> }; > >>>>>>>> > >>>>>>>> Arquillian Weld-Embedded-1.1 test: > >>>>>>>> > >>>>>>>> @BeforeClass > >>>>>>>> public static void beforeClazz() throws Exception { > >>>>>>>> > >>>>>>>> > >>>>>> > >>>> > >> > BeanProvider.getContextualReference(ContextControl.class).startContext(TransactionScoped.class); > >>>>>>>> } > >>>>>>>> > >>>>>>>> @Test > >>>>>>>> @Transactional > >>>>>>>> public void testMe() throws Exception { > >>>>>>>> // do something with TransactionScoped EntityManager > >>>>>>>> } > >>>>>>>> > >>>>>>>> If I move startContext to @Before method, the same error occurs. > >>>>>>>> > >>>>>>>> > >>>>>>>> Exception: > >>>>>>>> > >>>>>>>> testMe(com.parts.persistence.test.repository.PartsRepositoryTest) > >>>> Time > >>>>>>>> elapsed: 0.063 sec <<< ERROR! > >>>>>>>> org.jboss.weld.context.ContextNotActiveException: WELD-001303: No > >>>> active > >>>>>>>> contexts for scope type > >>>>>>>> org.apache.deltaspike.jpa.api.transaction.TransactionScoped > >>>>>>>> at > >>>>>>>> > >>>>>> > >>>> > >> > org.jboss.weld.manager.BeanManagerImpl.getContext(BeanManagerImpl.java:680) > >>>>>>>> at > >>>>>>>> > >>>>>> > >>>> > >> > org.jboss.weld.bean.proxy.ContextBeanInstance.getInstance(ContextBeanInstance.java:79) > >>>>>>>> at > >>>>>>>> > >>>>>> > >>>> > >> > org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:99) > >>>>>>>> at > >>>>>>>> > >>>>>> > >>>> > >> > org.jboss.weld.proxies.EntityManager$893098196$Proxy$_$$_WeldClientProxy.persist(Unknown > >>>>>>>> Source) > >>>>>>>> at > >>>>>>>> > >>>>>> > >>>> > >> > com.parts.persistence.test.repository.PartsRepositoryTest.testMe(PartsRepositoryTest.java:130) > >>>>>>>> > >>>>>>>> ideas? > >>>>>>>> > >>>>>>>> Cheers, > >>>>>>>> Ove > >>>>>>>> > >>>>>>>> > >>>>>>>> > >>>>>> > >>>>>> > >>>> > >>>> > >> > >> > >
