No, there's no reason this should be happening. As long as the object is serializable, you should be okay. Is Foo correctly being uploaded?
By proxy object, I assume you mean an object that implements an interface? Ikai Lan Developer Programs Engineer, Google App Engine Blog: http://googleappengine.blogspot.com Twitter: http://twitter.com/app_engine Reddit: http://www.reddit.com/r/appengine On Thu, Jul 7, 2011 at 12:52 PM, Craig Walls <[email protected]> wrote: > > Forgive me if this has been answered already...I looked around and > found only this one unanswered post: > > http://groups.google.com/group/google-appengine-java/browse_thread/thread/636e7cb54d7ca505 > > It seems that if I create a proxy object and put it into the session, > then I run into deserialization troubles when the server tries to > restore the session on the next request. > > To break this down to the simplest thing possible, I created an > interface called Foo: > > public interface Foo { > void doFoo(); > } > > And an equally simple implementation: > > public class FooImpl implements Foo, Serializable { > public void doFoo() { > System.out.println("Foo is good"); > } > } > > I then created a proxy object for it and put the proxy into the > session and redirected to another page. At that point, I get the > following: > > javax.servlet.ServletException: java.lang.RuntimeException: > java.lang.ClassNotFoundException: > org.springframework.social.connect.web.Foo > at > > com.google.apphosting.runtime.jetty.AppVersionHandlerMap.handle(AppVersionHandlerMap.java: > 251) > 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: > 260) > at com.google.apphosting.base.RuntimePb$EvaluationRuntime > $2.handleRequest(RuntimePb.java:9673) > at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java: > 422) > at com.google.net.rpc.impl.Server$RpcTask.runInContext(Server.java: > 573) > 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.lang.ClassNotFoundException: > org.springframework.social.connect.web.Foo > at > > com.google.apphosting.runtime.jetty.SessionManager.deserialize(SessionManager.java: > 386) > at > > com.google.apphosting.runtime.jetty.MemcacheSessionStore.getSession(MemcacheSessionStore.java: > 31) > at > > com.google.apphosting.runtime.jetty.SessionManager.loadSession(SessionManager.java: > 320) > at > > com.google.apphosting.runtime.jetty.SessionManager.getSession(SessionManager.java: > 294) > 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: > 249) > ... 19 more > Caused by: java.lang.ClassNotFoundException: > org.springframework.social.connect.web.Foo > at java.net.URLClassLoader$1.run(URLClassLoader.java:217) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:205) > at java.lang.ClassLoader.loadClass(ClassLoader.java:321) > at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) > at java.lang.ClassLoader.loadClass(ClassLoader.java:266) > at > > com.google.apphosting.runtime.security.RuntimeClassLoader.loadFilteredClass(RuntimeClassLoader.java: > 258) > at > > com.google.apphosting.runtime.security.RuntimeClassLoader.loadPrivilegedClass(RuntimeClassLoader.java: > 201) > at > > com.google.apphosting.runtime.security.RuntimeClassLoader.loadClass(RuntimeClassLoader.java: > 155) > at java.lang.ClassLoader.loadClass(ClassLoader.java:266) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:264) > at > java.io.ObjectInputStream.resolveProxyClass(ObjectInputStream.java: > 693) > at java.io.ObjectInputStream.readProxyDesc(ObjectInputStream.java: > 1548) > at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java: > 1510) > at > java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java: > 1749) > 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.defaultReadFields(ObjectInputStream.java: > 1963) > at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java: > 1887) > 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: > 382) > ... 28 more > > > Does GAE not support placing proxy objects into the session? > > -- > 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 > [email protected]. > To unsubscribe from this group, send email to > [email protected]. > 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en.
