Channel API に問題があります。何か助けていただければ幸いです。
ローカル 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 (両方とも添付) に煮詰めました。このフォーラムやその他のメッセージを読むと、トークンとチャネル キーの誤用かもしれませんが、考えられるすべての組み合わせを試してみましたが、役に立ちませんでした。
サーブレットのスニペット:
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));
jsp のスニペット:
channel = new goog.appengine.Channel(channelToken);
socket = channel.open();
スタック トレースから、クライアントはチャネルに正常に接続しており、メッセージを正常に送信していますが、メッセージをチャネルに書き戻すサーブレットが少し失敗しています。
助けてくれてありがとう!
コード:
ログ:
/ChannelTestMessage.do com.google.appengine.api.channel.ChannelFailureException: 予期しないエラーが発生しました。com.google.appengine.api.channel.ChannelServiceImpl.getExceptionForError(ChannelServiceImpl.java:112) で com.google.appengine.api.channel.ChannelServiceImpl.sendMessage(ChannelServiceImpl.java:68) で com.webstersmalley.chessweb.web .ChannelTestController.sendMessage(ChannelTestController.java:74) の com.webstersmalley.chessweb.web.ChannelTestController.getChannelTestMessage(ChannelTestController.java:68) の sun.reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) の sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で java.lang.reflect.Method.invoke(Method.java: