[jboss-user] [JBoss Seam] - No application context active when raising event

novare do-not-reply at jboss.com
Wed Apr 11 08:10:45 EDT 2007


Hi,

I get anonymous wrote : java.lang.IllegalStateException: No application context active when updating an @Entity from a MDB. The @Entity raise an event on the @PostUpdate. If commenting the call to raiseEvent everything works. It also works when updating the @Entity from the user interface and the event is raised.

-A message is placed on a JMS queue which is picked up by a MDB (The MDB is a seam component).
-The MDB make a call to a workhandler (also seam component) , which again ends up in updating an ARRIVAL through the Arrival Entity. 
-When Arrival is updated the following code is executed through @PostUpdate:
	@PostUpdate
  | 	public void afterUpdate(Arrival entity) 
  | 	{
  | 		Events.instance().raiseEvent("arrivalUpdate", entity);
  | 	}
-And this causes the following stacktrace:
11:30:34,436 INFO  [STDOUT] Hibernate: 
  |     update
  |         ARRIVAL 
  |     set
  |         ARR_ETA=?,
  |         ARR_PTA=?,
  |         ARR_ATA=?,
  |         COS_ID=? 
  |     where
  |         ARR_ID=?
  | 11:30:34,451 ERROR [JmsServerSession] org.jboss.resource.adapter.jms.inflow.JmsServerSession at 1b602b9 failed to commit/rollback
  | org.jboss.tm.JBossRollbackException: Unable to commit, tx=TransactionImpl:XidImpl[FormatId=257, GlobalId=jarle/49, BranchQual=, localId=49] status=STATUS_NO_TRANSACTION; - nested throwable: (javax.persistence.PersistenceException: java.lang.IllegalStateException: No application context active)
  | 	at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:372)
  | 	at org.jboss.tm.TxManager.commit(TxManager.java:240)
  | 	at org.jboss.resource.adapter.jms.inflow.JmsServerSession$XATransactionDemarcationStrategy.end(JmsServerSession.java:471)
  | 	at org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:260)
  | 	at org.jboss.resource.work.WorkWrapper.execute(WorkWrapper.java:204)
  | 	at org.jboss.util.threadpool.BasicTaskWrapper.run(BasicTaskWrapper.java:275)
  | 	at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(PooledExecutor.java:743)
  | 	at java.lang.Thread.run(Thread.java:595)
  | Caused by: javax.persistence.PersistenceException: java.lang.IllegalStateException: No application context active
  | 	at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:527)
  | 	at org.jboss.tm.TransactionImpl.doBeforeCompletion(TransactionImpl.java:1491)
  | 	at org.jboss.tm.TransactionImpl.beforePrepare(TransactionImpl.java:1110)
  | 	at org.jboss.tm.TransactionImpl.commit(TransactionImpl.java:324)
  | 	... 7 more
  | Caused by: java.lang.IllegalStateException: No application context active
  | 	at org.jboss.seam.Component.forName(Component.java:1577)
  | 	at org.jboss.seam.Component.getInstance(Component.java:1627)
  | 	at org.jboss.seam.Component.getInstance(Component.java:1622)
  | 	at org.jboss.seam.Component.getInstance(Component.java:1599)
  | 	at org.jboss.seam.Component.getInstance(Component.java:1594)
  | 	at org.jboss.seam.core.Events.instance(Events.java:138)
  | 	at com.logit.sailingplan.domain.ArrivalListener.afterUpdate(ArrivalListener.java:84)
  | 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  | 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  | 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  | 	at java.lang.reflect.Method.invoke(Method.java:585)
  | 	at org.hibernate.ejb.event.ListenerCallback.invoke(ListenerCallback.java:31)
  | 	at org.hibernate.ejb.event.EntityCallbackHandler.callback(EntityCallbackHandler.java:78)
  | 	at org.hibernate.ejb.event.EntityCallbackHandler.postUpdate(EntityCallbackHandler.java:67)
  | 	at org.hibernate.ejb.event.EJB3PostUpdateEventListener.onPostUpdate(EJB3PostUpdateEventListener.java:40)
  | 	at org.hibernate.action.EntityUpdateAction.postUpdate(EntityUpdateAction.java:183)
  | 	at org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:162)
  | 	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)
  | 	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:232)
  | 	at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:140)
  | 	at org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
  | 	at org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
  | 	at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
  | 	at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
  | 	at org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:515)
  | 	... 10 more

-By commenting the raiseEvent it works and the Arrival is updated, but I'd like to have my event raised.

-My @Observer for the Event is empty (just log)

Anyone know what causes this behaviour? (I'm using seam 1.2.1.GA)

Regards Jarle

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4036332#4036332

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4036332



More information about the jboss-user mailing list