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 <gerhard.petra...@gmail.com> 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 <oranh...@gmail.com>: > >> 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 >> >> >>