Hi, The local dev stores session information in memory so you won't get the NotSerializableException on local dev because the local dev doesn't need to serialize the objects that are in the session. I think that may also be the case with glassfish and tomcat if you haven't set up a database to store session information in. When you deploy to GAE, sessions are stored in the datastore and thus the objects in the session have to be serialized. The UIParameter object in your session isn't serializable but a quick glance at the docs indicates it has saveState and restoreState methods that may be what you are supposed to use.
Stephen www.cortexconnect.com On Sun, Aug 21, 2011 at 4:49 AM, nella <nella...@gmail.com> wrote: > Hi, I have a JSF2 app that is able to run on my local instance. However, > after I deployed to GAE, i encountered an object serialization runtime error > on pages containing a UIPrameter object (e.g. <f:param id="param1" > value="foo" />) > > I've tried the same app on glassfish (local) and tomcat (local), and they > both run fine. I suspect maybe it is not as simple as object serialization > problem? Could it be concurrent thread related issue? I can use an extra > pair of eyes to spot what am I missing here. Thank you > > > [code] > > Uncaught exception from servlet > java.lang.RuntimeException: java.io.NotSerializableException: > javax.faces.component.UIParameter > at > com.google.apphosting.runtime.jetty.SessionManager.serialize(SessionManager.java:358) > at > com.google.apphosting.runtime.jetty.DatastoreSessionStore.createEntityForSession(DatastoreSessionStore.java:71) > at > com.google.apphosting.runtime.jetty.DatastoreSessionStore.saveSession(DatastoreSessionStore.java:93) > at > com.google.apphosting.runtime.jetty.SessionManager$AppEngineSession.save(SessionManager.java:153) > at > com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:41) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) > at > org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) > at > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) > at > org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) > at > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) > at > com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:249) > at > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > at org.mortbay.jetty.Server.handle(Server.java:326) > at > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) > at > org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) > at > com.google.apphosting.runtime.jetty.RpcRequestParser.parseAvailable(RpcRequestParser.java:76) > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > at > com.google.apphosting.runtime.jetty.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:135) > at > com.google.apphosting.runtime.JavaRuntime.handleRequest(JavaRuntime.java:262) > at > com.google.apphosting.base.RuntimePb$EvaluationRuntime$2.handleRequest(RuntimePb.java:9819) > at com.google.net.rpc.impl.RpcUtil.handleRequest(RpcUtil.java:445) > at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:414) > at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:579) > at > com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:454) > at com.google.tracing.TraceContext.runInContext(TraceContext.java:694) > at > com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:332) > at > com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:324) > at > com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:452) > 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:636) > Caused by: java.io.NotSerializableException: javax.faces.component.UIParameter > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1173) > at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:343) > at java.util.ArrayList.writeObject(ArrayList.java:673) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:616) > at > java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962) > at > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1478) > at > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1409) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1167) > at > java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1526) > at > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1491) > at > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1409) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1167) > at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:343) > at java.util.HashMap.writeObject(HashMap.java:1018) > at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:616) > at > java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:962) > at > java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1478) > at > java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1409) > at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1167) > at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:343) > at > com.google.apphosting.runtime.jetty.SessionManager.serialize(SessionManager.java:355) > ... 33 more > > [/code] > > -- > You received this message because you are subscribed to the Google Groups > "Google App Engine for Java" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/google-appengine-java/-/BrykFku0UxEJ. > To post to this group, send email to > google-appengine-java@googlegroups.com. > To unsubscribe from this group, send email to > google-appengine-java+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/google-appengine-java?hl=en. > -- You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to google-appengine-java@googlegroups.com. To unsubscribe from this group, send email to google-appengine-java+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.