Jason, many many thanks, the problem is solved.

And may I know why such an object is StreamingQueryResult returned together
with instances of T2?

And how is this instance returned? I googled on the web, someone mentioned
this instance is injected into instances of T2 as an additional field, is
this correct?

Thanks in advance :-)

2009/8/18 Jason (Google) <[email protected]>

> 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 <[email protected]> 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
>>
>>
>>
>
> >
>


-- 

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