Yesterday evening I noticed java.io.InvalidObjectException stopped being thrown. I don't know why but I hope it is related to switching from eclipse to intellij & not due to gae. (I also learned facelets is built into jsf2 so a separate jar isn't required.)
I have two new problems which only happen on live gae--not dev gae: 1) I'm testing jsf-basics.zip on http://www.coreservlets.com/JSF-Tutorial/jsf2/code/. * open bank-lookup.jsf * fill in form * click [Show Current Balance] * the correct jsf page is displayed * click chrome's Back * javax.faces.application.ViewExpiredException is thrown (whether using client or server state saving): org.apache.myfaces.shared_impl.util.StateUtils reconstruct: View State cannot be reconstructed javax.faces.FacesException: javax.faces.application.ViewExpiredException at org.apache.myfaces.shared_impl.util.StateUtils.decrypt(StateUtils.java: 490) at org.apache.myfaces.shared_impl.util.StateUtils.reconstruct(StateUtils.java: 378) at org.apache.myfaces.renderkit.html.HtmlResponseStateManager.getSavedState(Ht mlResponseStateManager.java: 213) at org.apache.myfaces.renderkit.html.HtmlResponseStateManager.getState(HtmlRes ponseStateManager.java: 160) at org.apache.myfaces.view.facelets.DefaultFaceletsStateManagementStrategy.res toreView (DefaultFaceletsStateManagementStrategy.java: 140) at org.apache.myfaces.application.jsp.JspStateManagerImpl.restoreView(JspState ManagerImpl.java: 388) at org.apache.myfaces.shared_impl.view.ViewDeclarationLanguageBase.restoreView (ViewDeclarationLanguageBase.java: 106) at org.apache.myfaces.view.facelets.FaceletViewDeclarationLanguage.restoreView (FaceletViewDeclarationLanguage.java: 1277) .... This doesn't happen if I submit the form with errors, fix them, & click [Show Current Balance] button: * open bank-lookup.jsf * click [Show Current Balance] button * validation errors are shown (post back) * correct errors * click [Show Current Balance] button * click Back button 2) A simple use of <f:ajax> doesn't update: <h:selectOneMenu id="menu" value="#{bankingBean.customerId}"> <f:ajax event="change" execute="@this" render="register"/> <f:selectItems value="#{bankingBean.customerIds}"/> </h:selectOneMenu> <h:outputText id="register" value="#{bankingBean.customerId}"/> On Thu, Oct 21, 2010 at 9:32 PM, ken keller <[email protected]> wrote: > I'm a JSF2/myfaces rookie. I have it working w/ Eclipse Helios & gae > Eclipse plugin. When I deploy it & visit my test page, a blank page is > displayed & the log entry is appended to this message. It appears to be a > session deserialization problem. Thx. for your help. > > > javax.servlet.ServletException: java.lang.RuntimeException: > java.io.InvalidObjectException: enum constant attributes does not exist in > class javax.faces.component.UIComponent$PropertyKeys > at > com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:240) > 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:261) > at > com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:8486) > at > com.google.apphosting.base.RuntimePb$EvaluationRuntime$6.handleBlockingRequest(RuntimePb.java:8484) > at > com.google.net.rpc.impl.BlockingApplicationHandler.handleRequest(BlockingApplicationHandler.java:24) > at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:418) > at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java:572) > at > com.google.tracing.TraceContext$TraceContextRunnable$1.run(TraceContext.java:448) > at com.google.tracing.TraceContext.runInContext(TraceContext.java:688) > at > com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContextNoUnref(TraceContext.java:326) > at > com.google.tracing.TraceContext$AbstractTraceContextCallback.runInInheritedContext(TraceContext.java:318) > at > com.google.tracing.TraceContext$TraceContextRunnable.run(TraceContext.java:446) > 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.lang.RuntimeException: java.io.InvalidObjectException: enum > constant attributes does not exist in class > javax.faces.component.UIComponent$PropertyKeys > at > com.google.apphosting.runtime.jetty.SessionManager.deserialize(SessionManager.java:413) > at > com.google.apphosting.runtime.jetty.SessionManager.createSessionFromEntity(SessionManager.java:376) > at > com.google.apphosting.runtime.jetty.SessionManager.loadSession(SessionManager.java:314) > at > com.google.apphosting.runtime.jetty.SessionManager.getSession(SessionManager.java:284) > at > org.mortbay.jetty.servlet.AbstractSessionManager.getHttpSession(AbstractSessionManager.java:237) > at > org.mortbay.jetty.servlet.SessionHandler.setRequestedId(SessionHandler.java:246) > at > org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:136) > 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:238) > ... 21 more > Caused by: java.io.InvalidObjectException: enum constant attributes does not > exist in class javax.faces.component.UIComponent$PropertyKeys > at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1721) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1343) > at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1684) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340) > at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1684) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340) > at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1684) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368) > at java.util.HashMap.readObject(HashMap.java:1047) > 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.invokeReadObject(ObjectStreamClass.java:991) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1865) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346) > at java.io.ObjectInputStream.readArray(ObjectInputStream.java:1684) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1340) > at java.io.ObjectInputStream.skipCustomData(ObjectInputStream.java:1928) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1890) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346) > at java.io.ObjectInputStream.skipCustomData(ObjectInputStream.java:1928) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1890) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368) > at java.util.HashMap.readObject(HashMap.java:1047) > 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.invokeReadObject(ObjectStreamClass.java:991) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1865) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1770) > at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1346) > at java.io.ObjectInputStream.readObject(ObjectInputStream.java:368) > at > com.google.apphosting.runtime.jetty.SessionManager.deserialize(SessionManager.java:411) > ... 30 more > Caused by: java.lang.IllegalArgumentException: No enum const class > javax.faces.component.UIComponent$PropertyKeys.attributes > at java.lang.Enum.valueOf(Enum.java:214) > at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1719) > ... 69 more > >

