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

Reply via email to