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

Reply via email to