[jboss-user] [JBoss Seam] - Re: Seam & clustering

holtak do-not-reply at jboss.com
Wed Mar 7 21:16:16 EST 2007


Hello Gavin,

anonymous wrote : 
  | The use of CONVERSATION-scoped or SESSION-scoped Entity Bean Seam components is not considered truly cluster-safe. 
  |  
  | If you need to be cluster safe, hold the reference to the entity bean inside a stateful session bean (in any version of Seam) or inside a JavaBean Seam component that implements Mutable (in Seam 1.1). 
  | 

This means, that if I have an Entity Bean "Item" and use it as
#{item.price} in JSF, I shoud create an SFSB "ItemClusteraware" with getters for Item item = new Item() or em.find(..) from DB (create/edit-feature), remove @Name from Item and use it like this #{itemClusteraware.item.price} in my JSF?

Is that right?

I tried to clusterify my application:
- put "distributable" into web.xml
- anotate Session Beans with @Clustered
- I didn`t do do Entity - SFSB stuff mentioned before, because that would mean lot of refactoring.

Currently I have only one PC with Jboss with the cluster profile, so I deployed there.

The app deployed well and I saw some INFO about TreeCache taking care of SFSB replication.

The app works well too, but just for some period of time. After this period, jboss console output gets polluted with this exception once per second to infinity

ProjectActionImpl is declard like this

  | @Stateful
  | @Clustered
  | @Name("projectAction")
  | @CacheConfig(idleTimeoutSeconds=SCRatingDefaults.SFSBTimeout)
  | public class ProjectActionImpl implements ProjectAction, Serializable {
  | 


  | 03:42:07,162 INFO  [TxInterceptor] There was a problem handling this request
  | java.lang.RuntimeException: java.lang.RuntimeException: java.io.IOException: org.proaut.scrating.ejb3.session.ProjectActionImpl
  |         at org.jboss.ejb3.interceptor.LifecycleInterceptorHandler.prePassivate(LifecycleInterceptorHandler.java:169)
  |         at org.jboss.ejb3.stateful.StatefulContainer.invokePrePassivate(StatefulContainer.java:382)
  |         at org.jboss.ejb3.stateful.StatefulBeanContext.prePassivate(StatefulBeanContext.java:178)
  |         at org.jboss.ejb3.cache.tree.StatefulTreeCache$ClusteredStatefulCacheListener.nodePassivate(StatefulTreeCache.java:288)
  |         at org.jboss.cache.TreeCache.notifyNodePassivate(TreeCache.java:5739)
  |         at org.jboss.cache.interceptors.PassivationInterceptor.invoke(PassivationInterceptor.java:62)
  |         at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |         at org.jboss.cache.interceptors.TxInterceptor.handleNonTxMethod(TxInterceptor.java:345)
  |         at org.jboss.cache.interceptors.TxInterceptor.invoke(TxInterceptor.java:156)
  |         at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |         at org.jboss.cache.interceptors.CacheMgmtInterceptor.invoke(CacheMgmtInterceptor.java:179)
  |         at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:5520)
  |         at org.jboss.cache.TreeCache.evict(TreeCache.java:3716)
  |         at org.jboss.cache.eviction.BaseEvictionPolicy.evict(BaseEvictionPolicy.java:34)
  |         at org.jboss.cache.eviction.BaseEvictionAlgorithm.evictCacheNode(BaseEvictionAlgorithm.java:210)
  |         at org.jboss.cache.eviction.BaseEvictionAlgorithm.emptyRecycleQueue(BaseEvictionAlgorithm.java:461)
  |         at org.jboss.cache.eviction.BaseEvictionAlgorithm.process(BaseEvictionAlgorithm.java:97)
  |         at org.jboss.cache.eviction.EvictionTimerTask.run(EvictionTimerTask.java:80)
  |         at java.util.TimerThread.mainLoop(Timer.java:512)
  |         at java.util.TimerThread.run(Timer.java:462)
  | Caused by: java.lang.RuntimeException: java.io.IOException: org.proaut.scrating.ejb3.session.ProjectActionImpl
  |         at org.jboss.ejb3.stateful.StatefulBeanContext.extractBeanAndInterceptors(StatefulBeanContext.java:367)
  |         at org.jboss.ejb3.stateful.StatefulBeanContext.getInterceptorInstances(StatefulBeanContext.java:333)
  |         at org.jboss.ejb3.interceptor.LifecycleInvocationContextImpl.getLifecycleInvocationContext(LifecycleInvocationContextImpl.java:65)
  |         at org.jboss.ejb3.interceptor.LifecycleInterceptorHandler.prePassivate(LifecycleInterceptorHandler.java:160)
  |         ... 19 more
  | Caused by: java.io.IOException: org.proaut.scrating.ejb3.session.ProjectActionImpl
  |         at org.jboss.serial.classmetamodel.ClassMetamodelFactory.getClassMetaData(ClassMetamodelFactory.java:332)
  |         at org.jboss.serial.classmetamodel.StreamingClass.readStream(StreamingClass.java:72)
  |         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:381)
  |         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
  |         at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:643)
  |         at org.jboss.serial.persister.ArrayPersister.readObjectArray(ArrayPersister.java:196)
  |         at org.jboss.serial.persister.ArrayPersister.readData(ArrayPersister.java:172)
  |         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:412)
  |         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
  |         at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:643)
  |         at org.jboss.serial.io.JBossObjectInputStream.readObjectOverride(JBossObjectInputStream.java:163)
  |         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:342)
  |         at org.jboss.serial.io.MarshalledObject.get(MarshalledObject.java:68)
  |         at org.jboss.ejb3.stateful.StatefulBeanContext.extractBeanAndInterceptors(StatefulBeanContext.java:342)
  |         at org.jboss.ejb3.stateful.StatefulBeanContext.getInterceptorInstances(StatefulBeanContext.java:333)
  |         at org.jboss.ejb3.interceptor.LifecycleInvocationContextImpl.getLifecycleInvocationContext(LifecycleInvocationContextImpl.java:65)
  |         at org.jboss.ejb3.interceptor.LifecycleInterceptorHandler.prePassivate(LifecycleInterceptorHandler.java:160)
  |         at org.jboss.ejb3.stateful.StatefulContainer.invokePrePassivate(StatefulContainer.java:382)
  |         at org.jboss.ejb3.stateful.StatefulBeanContext.prePassivate(StatefulBeanContext.java:178)
  |         at org.jboss.ejb3.cache.tree.StatefulTreeCache$ClusteredStatefulCacheListener.nodePassivate(StatefulTreeCache.java:288)
  |         at org.jboss.cache.TreeCache.notifyNodePassivate(TreeCache.java:5739)
  |         at org.jboss.cache.interceptors.PassivationInterceptor.invoke(PassivationInterceptor.java:62)
  |         at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |         at org.jboss.cache.interceptors.TxInterceptor.handleNonTxMethod(TxInterceptor.java:345)
  |         at org.jboss.cache.interceptors.TxInterceptor.invoke(TxInterceptor.java:156)
  |         at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |         at org.jboss.cache.interceptors.CacheMgmtInterceptor.invoke(CacheMgmtInterceptor.java:179)
  | Caused by: java.lang.ClassNotFoundException: org.proaut.scrating.ejb3.session.ProjectActionImpl
  |         at java.lang.Class.forName0(Native Method)
  |         at java.lang.Class.forName(Class.java:242)
  |         at org.jboss.serial.classmetamodel.ClassMetamodelFactory.resolveClassByName(ClassMetamodelFactory.java:269)
  |         at org.jboss.serial.classmetamodel.ClassMetamodelFactory.getClassMetaData(ClassMetamodelFactory.java:289)
  |         at org.jboss.serial.classmetamodel.StreamingClass.readStream(StreamingClass.java:72)
  |         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:381)
  |         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
  |         at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:643)
  |         at org.jboss.serial.persister.ArrayPersister.readObjectArray(ArrayPersister.java:196)
  |         at org.jboss.serial.persister.ArrayPersister.readData(ArrayPersister.java:172)
  |         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:412)
  |         at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:82)
  |         at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:643)
  |         at org.jboss.serial.io.JBossObjectInputStream.readObjectOverride(JBossObjectInputStream.java:163)
  |         at java.io.ObjectInputStream.readObject(ObjectInputStream.java:342)
  |         at org.jboss.serial.io.MarshalledObject.get(MarshalledObject.java:68)
  |         at org.jboss.ejb3.stateful.StatefulBeanContext.extractBeanAndInterceptors(StatefulBeanContext.java:342)
  |         at org.jboss.ejb3.stateful.StatefulBeanContext.getInterceptorInstances(StatefulBeanContext.java:333)
  |         at org.jboss.ejb3.interceptor.LifecycleInvocationContextImpl.getLifecycleInvocationContext(LifecycleInvocationContextImpl.java:65)
  |         at org.jboss.ejb3.interceptor.LifecycleInterceptorHandler.prePassivate(LifecycleInterceptorHandler.java:160)
  |         at org.jboss.ejb3.stateful.StatefulContainer.invokePrePassivate(StatefulContainer.java:382)
  |         at org.jboss.ejb3.stateful.StatefulBeanContext.prePassivate(StatefulBeanContext.java:178)
  |         at org.jboss.ejb3.cache.tree.StatefulTreeCache$ClusteredStatefulCacheListener.nodePassivate(StatefulTreeCache.java:288)
  |         at org.jboss.cache.TreeCache.notifyNodePassivate(TreeCache.java:5739)
  |         at org.jboss.cache.interceptors.PassivationInterceptor.invoke(PassivationInterceptor.java:62)
  |         at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |         at org.jboss.cache.interceptors.TxInterceptor.handleNonTxMethod(TxInterceptor.java:345)
  |         at org.jboss.cache.interceptors.TxInterceptor.invoke(TxInterceptor.java:156)
  |         at org.jboss.cache.interceptors.Interceptor.invoke(Interceptor.java:68)
  |         at org.jboss.cache.interceptors.CacheMgmtInterceptor.invoke(CacheMgmtInterceptor.java:179)
  |         at org.jboss.cache.TreeCache.invokeMethod(TreeCache.java:5520)
  |         at org.jboss.cache.TreeCache.evict(TreeCache.java:3716)
  | 

the timeout of the SFSB is 
public static final int SFSBTimeout=((600*60)+60);

what exactly is going on? it looks like an EJB3 thing but I didn`t find nothing comparable in the EJB3 forum...

thank you,
Juraj Holtak

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

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



More information about the jboss-user mailing list