I posted this message in other forums, but I figure this problem is really 
centered around EJB3.

2007-07-25 11:14:41,313 ERROR [AbstractFlushingEventListener] Could not 
synchronize database state with session
  | org.hibernate.type.SerializationException: could not deserialize
  | at 
org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:214)
  | at 
org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:240)
  | at org.hibernate.type.SerializableType.fromBytes(SerializableType.java:82)
  | at 
org.hibernate.type.SerializableType.deepCopyNotNull(SerializableType.java:74)
  | at org.hibernate.type.MutableType.deepCopy(MutableType.java:25)
  | at 
org.hibernate.type.SerializableToBlobType.deepCopy(SerializableToBlobType.java:102)
  | at org.hibernate.type.TypeFactory.deepCopy(TypeFactory.java:353)
  | at 
org.hibernate.action.EntityUpdateAction.execute(EntityUpdateAction.java:114)
  | 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(AbstractFlushingEventList
  | ener.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
  | )
  | at 
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(Synchroniz
  | ationImple.java:114)
  | at 
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:2
  | 49)
  | at 
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:88)
  | at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
  | at 
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(Transac
  | tionImple.java:1256)
  | at 
com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:13
  | 5)
  | at 
com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java
  | :87)
  | at 
org.jboss.resource.adapter.jms.inflow.JmsServerSession$XATransactionDemarcationStrategy.end(JmsSe
  | rverSession.java:494)
  | at 
org.jboss.resource.adapter.jms.inflow.JmsServerSession.run(JmsServerSession.java:248)
  | 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: java.lang.ClassNotFoundException: No ClassLoaders found for: 
com.example.msg.Message
  | at org.jboss.mx.loading.LoadMgr3.beginLoadTask(LoadMgr3.java:306)
  | at 
org.jboss.mx.loading.RepositoryClassLoader.loadClassImpl(RepositoryClassLoader.java:514)
  | at 
org.jboss.mx.loading.RepositoryClassLoader.loadClass(RepositoryClassLoader.java:408)
  | at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
  | at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
  | at java.lang.Class.forName0(Native Method)
  | at java.lang.Class.forName(Class.java:242)
  | at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:574)
  | at 
org.hibernate.util.SerializationHelper$CustomObjectInputStream.resolveClass(SerializationHelper.j
  | ava:268)
  | at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1538)
  | at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1460)
  | at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1693)
  | at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1299)
  | at java.io.ObjectInputStream.readObject(ObjectInputStream.java:339)
  | at 
org.hibernate.util.SerializationHelper.deserialize(SerializationHelper.java:210)
  | ... 28 more

I modified a serializable object, part of an EJB3 Entity, during an 
MDB.onMessage() call. Hibernate attempts to update this serializable object 
during the transaction commit, but fails because it cannot load the class from 
the classloader.

The thread context classloader is assigned when processing the message. Is it 
cleared after message processing or after transaction completion? From my 
limited understanding of the code, it seems like the former.

Ordinarily, transaction commit does not require the context classloader of the 
.ear file, but in this case it does.

I'm certain this is a bug, I'd like to confirm it, however.


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

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4069435
_______________________________________________
jboss-user mailing list
jboss-user@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to