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.

Reply via email to