我在使用 Channel API 时遇到问题 - 任何帮助都将不胜感激。
我对本地开发服务器上的 API 没有任何问题,但是当我把它放在 apppot 上时,我得到了一个深奥的异常。附上完整的堆栈跟踪,但标题是:
com.google.appengine.api.channel.ChannelFailureException: An unexpected error occurred.
Caused by: com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 2: Unknown
我已经将应用程序简化为一个 servlet 和一个 jsp(均已附加),以确保我没有做任何过于复杂的事情。阅读此论坛上的一些消息和其他消息,这可能是我对令牌与频道密钥的滥用,但我已经尝试了所有我能想到的组合,但无济于事!
servlet 片段:
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();
从堆栈跟踪来看,客户端连接到通道正常,并成功发送消息,但是将消息写回通道的 servlet 是失败的位。
非常感谢您的帮助!
代码:
日志:
/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(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java: