Hi,

these are TEH relevant jars I think:

cditest-*-1.1.7.jar
myfaces-extcdi-*-1.0.5.jar
mysql-connector-java-5.1.24.jar
openejb-javaagent-4.5.2.jar
openejb-*-4.6.0-SNAPSHOT.jar
openwebbeans-spi-1.1.7.jar
openwebbeans-impl-1.1.7.jar
javaee-api-6.0-5.jar
openwebbeans-ejb-1.1.8.jar
openwebbeans-ee-*-1.1.8.jar
openjpa-2.2.0.jar

br
Reinis

On 04/10/2013 09:05 PM, Romain Manni-Bucau wrote:
Hi,

which version? did you try the snapshot?


*Romain Manni-Bucau*
*Twitter: @rmannibucau <https://twitter.com/rmannibucau>*
*Blog: **http://rmannibucau.wordpress.com/*<http://rmannibucau.wordpress.com/>
*LinkedIn: **http://fr.linkedin.com/in/rmannibucau*
*Github: https://github.com/rmannibucau*



2013/4/10 Reinis Vicups <[email protected]>

Hi guys,

got following scenario

**>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>**
@org.junit.runner.RunWith(org.**apache.openejb.junit.**
ApplicationComposer)
public class IamIntegrationTest{

     // ACHTUNG!
@javax.enterprise.inject.**Produces @javax.enterprise.inject.New
     HeavyProcessingController heavyProcessingController;

     @org.apache.openejb.testing.**Module
     public PersistenceUnit somePersistenceConfigHere() {
         // boring code
     }

     @org.apache.openejb.testing.**Configuration
     public Properties settingUpSomeRessourceConfig() {
         // boring code
     }

     @Test
     public void iAmHeavyIntegrationTestMethod(**) {
         heavyProcessingController.**readALittleBitFromJPA();
heavyProcessingController.**initiateSomeHeavyProcessing();
     }
} // end test class


@javax.enterprise.context.**SessionScoped
public class HeavyProcessingControllerProdu**cer {

     @Inject
     JPAService jpaService;

     @Produces @RequestScoped
     public List<SomeEntity> readALittleBitFromJPA() {
jpaService.getEntityList();
     }

     @javax.enterprise.inject.**Produces @javax.enterprise.inject.New
     public HeavyProcessingControllerprodu**ceHeavyProcessingController() {

         // ACHTUNG, invoking here JPA and it works!
readALittleBitFromJPA();

         // ACHTUNG, doing this because of some complex initialization
logic required aforehand.
return org.apache.myfaces.extensions.**cdi.core.impl.util.CodiUtils.**
getContextualReferenceByClass(**HeavyProcessingController.**class);
     }
} // end Producer class


// ACHTUNG, this is stateful EJB Bean with no other explicit context
annotations!
@javax.ejb.Stateful
public class HeavyProcessingController implements Serializable {

     @Inject
     AsyncHeavyProcessingWorker asyncWorker;

     public void initiateSomeHeavyProcessing() {
         // ACHTUNG! @Asynchronous method is invoked here
         asyncWorker.**asyncDoHeavyProcessingAndSaveY**
ourWorkIntoPersistence();
     }
}


// ACHTUNG, this is stateful EJB Bean with no other explicit context
annotations!
@javax.ejb.Stateful
public class AsyncHeavyProcessingWorkerimpl**ements Serializable {

     @Inject
     JPAService jpaService;

     @Asynchronous
     public void asyncDoHeavyProcessingAndSaveY**ourWorkIntoPersistence(){
         // ACHTUNG!
jpaService.persist(**allThatHardWork);
     }
}

@javax.ejb.Stateless
public class JPAService {

     @PersistenceContext
     EntityManager em;

     // ACHTUNG, no explicit TransacactionAttribute, using defaults!
     public void persist(SomeJPAEntity allThatHardWork) {
em.persist(allThatHardWork);
     } <- ACHTUNG, exceptionsomewhere here!
}

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<**<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<**
<<<<<<<<<<<<<<<<<<<<<<<<

Executing this code causes following exception:


3389  default  TRACE  [@Asynchronous IntegrationTest - 1] openjpa.Runtime
- org.apache.openjpa.**persistence.**EntityManagerFactoryImpl@**51d62781
created EntityManager org.apache.openjpa.**persistence.EntityManagerImpl@*
*5ead44a4.
123394  default  TRACE  [@Asynchronous IntegrationTest - 1]
openjpa.Runtime - An exception occurred while ending the transaction.  This
exception will be re-thrown.
javax.enterprise.context.**ContextNotActiveException: WebBeans context
with scope type annotation @SessionScoped does not exist within current
thread
     at org.apache.webbeans.container.**BeanManagerImpl.getContext(**
BeanManagerImpl.java:351)
     at org.apache.webbeans.intercept.**NormalScopedBeanInterceptorHan**
dler.getContextualInstance(**NormalScopedBeanInterceptorHan**
dler.java:143)
     at org.apache.webbeans.intercept.**NormalScopedBeanInterceptorHan**
dler.invoke(**NormalScopedBeanInterceptorHan**dler.java:114)
     at org.apache.webbeans.intercept.**NormalScopedBeanInterceptorHan**
dler.invoke(**NormalScopedBeanInterceptorHan**dler.java:108)
*_at xyz.my.domain.User_$$_**javassist_3.pcGetStateManager(**
User_$$_javassist_3.java)_*
     at org.apache.openjpa.kernel.**BrokerImpl.isDetached(**
BrokerImpl.java:4580)
     at org.apache.openjpa.kernel.**SingleFieldManager.preFlushPC(**
SingleFieldManager.java:775)
     at org.apache.openjpa.kernel.**SingleFieldManager.preFlush(**
SingleFieldManager.java:621)
     at org.apache.openjpa.kernel.**SingleFieldManager.preFlush(**
SingleFieldManager.java:589)
     at org.apache.openjpa.kernel.**SingleFieldManager.preFlush(**
SingleFieldManager.java:505)
     at org.apache.openjpa.kernel.**StateManagerImpl.preFlush(**
StateManagerImpl.java:2982)
     at org.apache.openjpa.kernel.**PNewState.beforeFlush(**
PNewState.java:40)
     at org.apache.openjpa.kernel.**StateManagerImpl.beforeFlush(**
StateManagerImpl.java:1054)
     at org.apache.openjpa.kernel.**BrokerImpl.flush(BrokerImpl.**
java:2112)
     at org.apache.openjpa.kernel.**BrokerImpl.flushSafe(**
BrokerImpl.java:2072)
     at org.apache.openjpa.kernel.**BrokerImpl.beforeCompletion(**
BrokerImpl.java:1990)
     at org.apache.geronimo.**transaction.manager.**TransactionImpl.**
beforeCompletion(**TransactionImpl.java:527)
     at org.apache.geronimo.**transaction.manager.**TransactionImpl.**
beforeCompletion(**TransactionImpl.java:512)
     at org.apache.geronimo.**transaction.manager.**
TransactionImpl.beforePrepare(**TransactionImpl.java:413)
     at org.apache.geronimo.**transaction.manager.**TransactionImpl.commit(
**TransactionImpl.java:262)
     at org.apache.geronimo.**transaction.manager.**
TransactionManagerImpl.commit(**TransactionManagerImpl.java:**252)
     at org.apache.openejb.core.**transaction.**JtaTransactionPolicy.**
completeTransaction(**JtaTransactionPolicy.java:328)
     at org.apache.openejb.core.**transaction.TxRequired.commit(**
TxRequired.java:75)
     at org.apache.openejb.core.**transaction.**EjbTransactionUtil.**
afterInvoke(**EjbTransactionUtil.java:76)
     at org.apache.openejb.core.**stateful.StatefulContainer.**
afterInvoke(StatefulContainer.**java:843)
     at org.apache.openejb.core.**stateful.StatefulContainer.**
businessMethod(**StatefulContainer.java:667)
     at org.apache.openejb.core.**stateful.StatefulContainer.**
invoke(StatefulContainer.java:**364)
     at org.apache.openejb.core.ivm.**EjbObjectProxyHandler.**
synchronizedBusinessMethod(**EjbObjectProxyHandler.java:**256)
     at org.apache.openejb.core.ivm.**EjbObjectProxyHandler$1.call(**
EjbObjectProxyHandler.java:**244)
     at org.apache.openejb.async.**AsynchronousPool$**
AsynchronousCall.call(**AsynchronousPool.java:110)
     at java.util.concurrent.**FutureTask$Sync.innerRun(**
FutureTask.java:334)
     at java.util.concurrent.**FutureTask.run(FutureTask.**java:166)
     at java.util.concurrent.**ThreadPoolExecutor.runWorker(**
ThreadPoolExecutor.java:1110)
     at java.util.concurrent.**ThreadPoolExecutor$Worker.run(**
ThreadPoolExecutor.java:603)
     at java.lang.Thread.run(Thread.**java:722)
WARNING - Could NOT lazily initialize session context because NO active
request context
123395  default  TRACE  [@Asynchronous IntegrationTest - 1]
openjpa.Runtime - 
org.apache.openjpa.**persistence.EntityManagerImpl@**5ead44a4.close()
invoked.

I have following questions:

1.Why is that this exception is logged ONLY when setting openjpa.log to
Runtime=TRACE? In other cases it's "swallowed" (as in there's no exception
thrown in jpaService.persist(**allThatHardWork);)

2. Why is this exception? I already access JPA from @SessionScoped bean in
HeavyProcessingControllerProdu**cer.**produceHeavyProcessingControll**er()
when I readALittleBitFromJPA() and it reads from Database just fine.

3. If you care to comment on the design of those classes, I would love to
here if it's ok or not

Thanks guys for reading this lengthy e-mail and even more thanks if you
give your thought on this
Reinis.


Reply via email to