2011-05-15 20 views
2

チャンネルAPIに問題があります。ご協力いただければ幸いです。Google appengineチャンネルAPI(Java)の問題

私は地元のdevのサーバー上のAPIに問題をしたんが、私はappspotにそれを置くとき、私がスローされた難解な例外を取得します。完全なスタックトレースを取り付けたが、見出しがあるさ:

com.google.appengine.api.channel.ChannelFailureException: An unexpected error occurred.  
Caused by: com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 2: Unknown 

私はオーバー複雑な何もしていないよ確認するために、ダウンサーブレットとJSP(両方が結合)にアプリを煮てきました。このフォーラムや他の人のメッセージの一部を読んでみると、私のトークンとチャンネルキーの誤用かもしれませんが、私が考えているすべての組み合わせを試しました!

サーブレットのスニペット:JSPの

ChannelService channelService = ChannelServiceFactory.getChannelService(); 
String channelKey = getChannelKey(userService.getCurrentUser().getUserId()); 
String token = channelService.createChannel(channelKey); 

ChannelService channelService = ChannelServiceFactory.getChannelService(); 
channelService.sendMessage(new ChannelMessage(channelKey, message)); 

スニペット:

channel = new goog.appengine.Channel(channelToken); 
socket = channel.open(); 

スタックトレースから、クライアントはチャンネルOKに接続し、そして成功していますメッセージを送信しますが、メッセージをチャネルに書き戻すサーブレットは失敗するビットです。

大変ありがとうございました!

コード:

ChannelTestController.java

ChannelTestPage.jsp

ログ:

/ChannelTestMessage.do com.google.appengine.api.channel.ChannelFailureException: An unexpected error occurred. at com.google.appengine.api.channel.ChannelServiceImpl.getExceptionForError(ChannelServiceImpl.java:112) at com.google.appengine.api.channel.ChannelServiceImpl.sendMessage(ChannelServiceImpl.java:68) at com.webstersmalley.chessweb.web.ChannelTestController.sendMessage(ChannelTestController.java:74) at com.webstersmalley.chessweb.web.ChannelTestController.getChannelTestMessage(ChannelTestController.java:68) 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:43) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:176) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560) at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 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 org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) at com.google.net.rpc.impl.RpcUtil.runRpcInApplication(RpcUtil.java:439) 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: com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 2: Unknown at com.google.net.rpc.RpcStub$RpcCallbackDispatcher$1.runInContext(RpcStub.java:1050) 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 com.google.net.rpc.RpcStub$RpcCallbackDispatcher.rpcFinished(RpcStub.java:1071) at com.google.net.rpc.RPC.internalFinish(RPC.java:2184) at com.google.net.rpc.impl.RpcNetChannel.finishRpc(RpcNetChannel.java:2338) at com.google.net.rpc.impl.RpcNetChannel.messageReceived(RpcNetChannel.java:1267) at com.google.net.rpc.impl.RpcConnection.parseMessages(RpcConnection.java:328) at com.google.net.rpc.impl.RpcConnection.dataReceived(RpcConnection.java:299) at com.google.net.async.Connection.handleReadEvent(Connection.java:474) at com.google.net.async.EventDispatcher.processNetworkEvents(EventDispatcher.java:831) at com.google.net.async.EventDispatcher.internalLoop(EventDispatcher.java:207) at com.google.net.async.EventDispatcher.loop(EventDispatcher.java:103) at com.google.net.async.GlobalEventRegistry$2.runLoop(GlobalEventRegistry.java:95) at com.google.net.async.LoopingEventDispatcher$EventDispatcherThread.run(LoopingEventDispatcher.java:385)

答えて

2

私はAppEngineのJava APIのGoogleの独自のディスカッション・フォーラムでこれをクロスポスト、そしてそれはそこに答えました。 。

概要は(すべての新しいアプリケーションがそうであるように、今、デフォルトでは、)高のレプリケーションがオンになっているときに問題が発生すると、デフォルト以外のバージョンが使用されていることです。

私のアプリは最近のものだったので(高い担当者がオンになっていました)、チャンネルを手に入れるさまざまな方法を試していたので、私のアプリのデフォルトバージョンは使用していませんでした。最新のバージョンを指すようにデフォルトを切り替えると、そのURLを使用すると問題が解決しました。

+0

Matthewありがとうございました。フォーラムでディスカッションへのリンクを投稿します:http://groups.google.com/group/google-appengine-java/browse_thread/thread/6e7c051cea21d234/b702fd42f19d192b –

関連する問題