Appengine - 1,9,63
GWT - 2,8,1
Клиент-серверный вызов: использование стандартной реализации GWT RPC
Код серверной стороны:
IndexSpec indexSpec = IndexSpec.newBuilder().setName("index").build();
Index index = SearchServiceFactory.getSearchService().getIndex(indexSpec);
Document doc = Document.newBuilder()...
try{
index.put(doc); //Line that results in an exception
}catch(Exception e){
e.printStackTrace();
}
StackTrace:
com.google.apphosting.api.ApiProxy $ CallNotFoundException: Невозможно выполнить поиск вызова API.IndexDocument в потоке, который не является ни потоком исходного запроса, ни потоком, созданным ThreadManager
на com.google.apphosting.api.ApiProxy $ CallNotFoundException.foreignThread (ApiProxy.java:800)
на com.google.apphosting.api.ApiProxy $ 1.get (ApiProxy.java:175)
на com.google.apphosting.api.ApiProxy $ 1.get (ApiProxy.java:172)
на com.google.appengine.api.utils.FutureWrapper.get (FutureWrapper.java:89)
на com.google.appengine.api.utils.FutureWrapper.get (FutureWrapper.java:89)
на com.google.appengine.api.search.FutureHelper.getInternal (FutureHelper.java:73)
на com.google.appengine.api.search.FutureHelper.quietGet (FutureHelper.java:32)
на com.google.appengine.api.search.IndexImpl.put (IndexImpl.java:485)
на com.vehicle.track.server.User.save (User.java:82)
at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)
at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:498)
на com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse (RPC.java:587)
на com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall (RemoteServiceServlet.java:333)
на com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall (RemoteServiceServlet.java:303)
на com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost (RemoteServiceServlet.java:373)
на com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost (AbstractRemoteServiceServlet.java:62)
на javax.servlet.http.HttpServlet.service (HttpServlet.java:707)
на javax.servlet.http.HttpServlet.service (HttpServlet.java:790)
в org.eclipse.jetty.servlet.ServletHolder.handle (ServletHolder.java:812)
в org.eclipse.jetty.servlet.ServletHandler.doHandle (ServletHandler.java:587)
в org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:143)
в org.eclipse.jetty.security.SecurityHandler.handle (SecurityHandler.java:577)
в org.eclipse.jetty.server.session.SessionHandler.doHandle (SessionHandler.java:223)
в org.eclipse.jetty.server.handler.ContextHandler.doHandle (ContextHandler.java:1127)
в org.eclipse.jetty.servlet.ServletHandler.doScope (ServletHandler.java:515)
в org.eclipse.jetty.server.session.SessionHandler.doScope (SessionHandler.java:185)
в org.eclipse.jetty.server.handler.ContextHandler.doScope (ContextHandler.java:1061)
в org.eclipse.jetty.server.handler.ScopedHandler.handle (ScopedHandler.java:141)
в org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:97)
в org.eclipse.jetty.server.handler.RequestLogHandler.handle (RequestLogHandler.java:95)
в org.eclipse.jetty.server.handler.HandlerWrapper.handle (HandlerWrapper.java:97)
в org.eclipse.jetty.server.Server.handle (Server.java:499)
в org.eclipse.jetty.server.HttpChannel.handle (HttpChannel.java:311)
в org.eclipse.jetty.server.HttpConnection.onFillable (HttpConnection.java:257)
at org.eclipse.jetty.io.AbstractConnection $ 2.run (AbstractConnection.java:544)
в org.eclipse.jetty.util.thread.QueuedThreadPool.runJob (QueuedThreadPool.java:635)
в org.eclipse.jetty.util.thread.QueuedThreadPool $ 3.run (QueuedThreadPool.java:555)
at java.lang.Thread.run (Thread.java:748)