Hi Zhile. The execute method returns a StreamingQueryResult instance which
you can't pass back directly or you'll see the error that you indicated
above. What you can do is create a new Collection instance (e.g. an
ArrayList or Vector), iterate through the query results copying each item
(T2 instance) into the new Collection, and then return that instead.
You may find the recently added gwtguestbook demo useful. The full source is
available through Subversion:

http://code.google.com/p/googleappengine/source/browse/#svn/trunk/java/demos/gwtguestbook

- Jason

On Fri, Aug 14, 2009 at 9:46 PM, Zhi Le Zou <zouzh...@gmail.com> wrote:

> Hello everyone,
> I encountered a strange exception when doing datastore query with GWT RPC
> call. The stack trace is pasted at bottom.
>
> There are two data types involved in the query, both are annotated
> properly. T1 has several simple properties, while T2 has several simple
> properties and holds an instance of T1. The query code is below.  Does
> anyone know why such exception is produced?  A million thanks in advance :-)
>
> public List<T2> getAllRecords(){
> PersistenceManager pm = MyUtil.getPersistenceManager(); // The persistence
> manager is returned correctly here.
>  try {
> Query query = pm.newQuery(T2.class);
> List<T2> allRecords = (List<T2>) query.execute();
>  return allRecords;
> } finally {
> pm.close();
>  }
> }
>
>
> 2009-8-15 4:29:05 com.google.appengine.tools.development.ApiProxyLocalImpl
> log
> SEVERE: [1250310545707000] javax.servlet.ServletContext log: Exception
> while dispatching incoming RPC call
> com.google.gwt.user.client.rpc.SerializationException: Type
> 'org.datanucleus.store.appengine.query.StreamingQueryResult' was not
> included in the set of types which can be serialized by this
> SerializationPolicy or its Class object could not be loaded. For security
> purposes, this type will not be serialized.
>  at
> com.google.gwt.user.server.rpc.impl.StandardSerializationPolicy.validateSerialize(
> StandardSerializationPolicy.java:83)
>  at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(
> ServerSerializationStreamWriter.java:591)
>  at
> com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:129)
> at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:146)
>  at
> com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:530)
> at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:573)
>  at
> com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:441)
> at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:529)
>  at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:166)
> at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86)
>  at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
>  at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
>  at
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
>  at
> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:124)
> at
> org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
>  at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
> at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
>  at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
> at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:712)
>  at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
> at
> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
>  at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> at
> com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:313)
>  at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
> at org.mortbay.jetty.Server.handle(Server.java:313)
>  at
> org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
> at
> org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
>  at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
> at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
>  at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
> at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
>  at
> org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)
>
> com.google.gwt.user.client.rpc.StatusCodeException: The call failed on the
> server; see server log for details
>  at
> com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:192)
> at
> com.google.gwt.http.client.Request.fireOnResponseReceivedImpl(Request.java:264)
>  at
> com.google.gwt.http.client.Request.fireOnResponseReceivedAndCatch(Request.java:236)
> at
> com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:227)
>  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 com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
> at
> com.google.gwt.dev.shell.ie.IDispatchImpl.callMethod(IDispatchImpl.java:126)
>  at
> com.google.gwt.dev.shell.ie.IDispatchProxy.invoke(IDispatchProxy.java:155)
> at com.google.gwt.dev.shell.ie.IDispatchImpl.Invoke(IDispatchImpl.java:294)
>  at
> com.google.gwt.dev.shell.ie.IDispatchImpl.method6(IDispatchImpl.java:194)
> at
> org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:117)
>  at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
> at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1925)
>  at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2966)
> at
> com.google.gwt.dev.SwtHostedModeBase.processEvents(SwtHostedModeBase.java:235)
>  at
> com.google.gwt.dev.HostedModeBase.pumpEventLoop(HostedModeBase.java:558)
> at com.google.gwt.dev.HostedModeBase.run(HostedModeBase.java:405)
>  at com.google.gwt.dev.HostedMode.main(HostedMode.java:232)
>
>
> --
>
> Kind Regards
> Zhile
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to