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

Reply via email to