1 Reply Latest reply on Aug 17, 2006 1:15 PM by dbatcn

    SerializationException on org.jboss.seam.core.Messages from

      I'm getting a SerializationException on org.jboss.seam.core.Messages from my stateful session bean and it's quite unclear to me why or how. I'm using Seam extended managed persistence. (Which is relevant or irrelevant?) Can anybody explain how this is possible?

      code snippet

      @Stateful
      @Name("groupManager")
      @LoggedIn
      public class GroupManagerBean implements GroupManager, Serializable {
      
       @In(create=true)
       private EntityManager orgmobDatabase;
      
       @In(create=true)
       private Map<String, String> messages;
      
       @In(create=true)
       private transient FacesMessages facesMessages;
      
       private transient Map<Locale,MembershipComparator> membershipComparatorMap;
      
       public GroupManagerBean() {
       initMembershipComparatorMap();
       }
      
       private void initMembershipComparatorMap() {
       membershipComparatorMap = new HashMap<Locale,MembershipComparator>();
       }
      
       private void readObject( ObjectInputStream in )
       throws IOException, ClassNotFoundException {
       in.defaultReadObject();
       initMembershipComparatorMap();
       }
      
      }
      


      I know I don't have an explicit serialVersionUID but I (naively?) didn't think that could make a difference since all I'm doing right now is repeatedly deploying my app to JBoss which only uses one compiler (1.5.0_07-b03, though I don't think that matters) and undeploys any previously installed version of my app. I can show more code if that's needed. The stack trace is:


      2006-08-11 15:31:21,265 DEBUG [org.hibernate.impl.SessionFactoryImpl] deserialized: 402881e40cff1c58010cff51838c0009
      2006-08-11 15:31:21,265 DEBUG [org.hibernate.impl.SessionFactoryObjectFactory] lookup: uid=402881e40cff1c58010cff51838c0009
      2006-08-11 15:31:21,265 DEBUG [org.hibernate.impl.SessionFactoryImpl] resolved SessionFactory by uid
      2006-08-11 15:31:21,265 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/member].[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
      javax.faces.el.EvaluationException: Exception while invoking expression #{groupManager.forceGroup}
      at org.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:153)
      at org.jboss.seam.core.Pages.callAction(Pages.java:161)
      at org.jboss.seam.core.Pages.callAction(Pages.java:143)
      at org.jboss.seam.jsf.AbstractSeamPhaseListener.callPageActions(AbstractSeamPhaseListener.java:128)
      at org.jboss.seam.jsf.AbstractSeamPhaseListener.beforeRender(AbstractSeamPhaseListener.java:98)
      at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:50)
      at org.jboss.seam.jsf.SeamExtendedManagedPersistencePhaseListener.beforePhase(SeamExtendedManagedPersistencePhaseListener.java:38)
      at org.apache.myfaces.lifecycle.LifecycleImpl.informPhaseListenersBefore(LifecycleImpl.java:520)
      at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:342)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:107)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.jboss.seam.servlet.SeamRedirectFilter.doFilter(SeamRedirectFilter.java:30)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
      at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
      at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
      at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
      at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
      at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
      at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
      at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
      at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
      at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
      at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
      at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
      at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
      at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
      at java.lang.Thread.run(Thread.java:595)
      Caused by: java.lang.RuntimeException: java.io.IOException
      at org.jboss.ejb3.stateful.StatefulBeanContext.extractBeanAndInterceptors(StatefulBeanContext.java:365)
      at org.jboss.ejb3.stateful.StatefulBeanContext.getInstance(StatefulBeanContext.java:309)
      at org.jboss.ejb3.stateful.StatefulInstanceInterceptor.invoke(StatefulInstanceInterceptor.java:75)
      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      at org.jboss.aspects.security.AuthenticationInterceptor.invoke(AuthenticationInterceptor.java:78)
      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:47)
      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      at org.jboss.ejb3.asynchronous.AsynchronousInterceptor.invoke(AsynchronousInterceptor.java:106)
      at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:101)
      at org.jboss.ejb3.stateful.StatefulContainer.localInvoke(StatefulContainer.java:188)
      at org.jboss.ejb3.stateful.StatefulLocalProxy.invoke(StatefulLocalProxy.java:98)
      at $Proxy444.forceGroup(Unknown Source)
      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.apache.myfaces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:129)
      ... 30 more
      Caused by: java.io.IOException
      at org.jboss.serial.persister.RegularObjectPersister.readSlotWithMethod(RegularObjectPersister.java:107)
      at org.jboss.serial.persister.RegularObjectPersister.defaultRead(RegularObjectPersister.java:269)
      at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:241)
      at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:411)
      at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:81)
      at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:639)
      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:411)
      at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:81)
      at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:639)
      at org.jboss.serial.io.JBossObjectInputStream.readObjectOverride(JBossObjectInputStream.java:165)
      at java.io.ObjectInputStream.readObject(ObjectInputStream.java:343)
      at org.jboss.serial.io.MarshalledObject.get(MarshalledObject.java:68)
      at org.jboss.ejb3.stateful.StatefulBeanContext.extractBeanAndInterceptors(StatefulBeanContext.java:342)
      ... 47 more
      Caused by: java.lang.reflect.InvocationTargetException
      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.jboss.serial.persister.RegularObjectPersister.readSlotWithMethod(RegularObjectPersister.java:103)
      ... 61 more
      Caused by: org.jboss.serial.exception.SerializationException: Could not create instance of org.jboss.seam.core.Messages$1 - org.jboss.seam.core.Messages$1
      at org.jboss.serial.classmetamodel.ClassMetaData.newInstance(ClassMetaData.java:327)
      at org.jboss.serial.persister.RegularObjectPersister.readData(RegularObjectPersister.java:239)
      at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.readObjectDescriptionFromStreaming(ObjectDescriptorFactory.java:411)
      at org.jboss.serial.objectmetamodel.ObjectDescriptorFactory.objectFromDescription(ObjectDescriptorFactory.java:81)
      at org.jboss.serial.objectmetamodel.DataContainer$DataContainerDirectInput.readObject(DataContainer.java:639)
      at org.jboss.serial.persister.RegularObjectPersister.readSlotWithFields(RegularObjectPersister.java:353)
      at org.jboss.serial.persister.ObjectInputStreamProxy.defaultReadObject(ObjectInputStreamProxy.java:78)
      at com.orgmob.member.GroupManagerBean.readObject(GroupManagerBean.java:135)
      ... 66 more
      Caused by: java.lang.InstantiationException: org.jboss.seam.core.Messages$1
      at java.lang.Class.newInstance0(Class.java:335)
      at java.lang.Class.newInstance(Class.java:303)
      at org.jboss.serial.classmetamodel.ClassMetaData.newInstance(ClassMetaData.java:319)
      ... 73 more


      I'm using Seam 1.0.1.GA and JBoss 4.0.4.GA from the JEMS installer. My searching for other similar instances didn't turn didn't turn up ones like it. I hope it's OK to post this here.

      Thanks,
      David

        • 1. Re: SerializationException on org.jboss.seam.core.Messages f

          Hmmm, marking the messages field as transient seems to do the trick. I never did quite figure out why that was required, since the class is marked as Serializable. I was also surprised that Component.getInstance() calls in readObject() for facesMessages could fail because there was no conversation, even when my readObject() method was annotated as @Begin(join=true). Oh well, the simple method seems to work.