在GWT中获取com.google.gwt.user.client.rpc.StatusCodeException:0

时间:2012-09-27 14:58:48

标签: gwt gwt-rpc gxt cloudflare

我有时/经常在GWT中获得此异常,但不知道原因:

SEVERE: com.google.gwt.user.client.rpc.StatusCodeException: 0 
java.lang.RuntimeException: com.google.gwt.user.client.rpc.StatusCodeException: 0 
    at Unknown.java_lang_RuntimeException_RuntimeException__Ljava_lang_Throwable_2V(Unknown Source)
    at Unknown.de_ctech24_simplynews_web_client_util_SimpleCallback_$onFailure__Lde_ctech24_simplynews_web_client_util_SimpleCallback_2Ljava_lang_Throwable_2V(Unknown Source)
    at Unknown.com_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_$onResponseReceived__Lcom_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_2Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V(Unknown Source)
    at Unknown.com_google_gwt_http_client_Request_$fireOnResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_RequestCallback_2V(Unknown Source)
    at Unknown.com_google_gwt_http_client_RequestBuilder$1_onReadyStateChange__Lcom_google_gwt_xhr_client_XMLHttpRequest_2V(Unknown Source)
    at Unknown.<anonymous>(Unknown Source)
    at Unknown.com_google_gwt_core_client_impl_Impl_apply__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2(Unknown Source)
Caused by: com.google.gwt.user.client.rpc.StatusCodeException: 0 
    at Unknown.java_lang_RuntimeException_RuntimeException__Ljava_lang_String_2Ljava_lang_Throwable_2V(Unknown Source)
    at Unknown.com_google_gwt_user_client_rpc_StatusCodeException_StatusCodeException__ILjava_lang_String_2V(Unknown Source)
    at Unknown.com_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_$onResponseReceived__Lcom_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_2Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V(Unknown Source)
    at Unknown.com_google_gwt_http_client_Request_$fireOnResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_RequestCallback_2V(Unknown Source)
    at Unknown.com_google_gwt_http_client_RequestBuilder$1_onReadyStateChange__Lcom_google_gwt_xhr_client_XMLHttpRequest_2V(Unknown Source)
    at Unknown.<anonymous>(Unknown Source)
    at Unknown.com_google_gwt_core_client_impl_Impl_apply__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2(Unknown Source)

花了一些时间谷歌后我发现了这个:http://www.mail-archive.com/google-web-toolkit@googlegroups.com/msg79537.html

有一个有趣的提示:如果您断开WLAN连接并再次连接,则会出现这种情况 - 然后出现错误。我在我的笔记本上尝试了这个 - 然后发生异常。

另一个问题是此异常有时出现(并非总是在同一时间或执行特定操作时 - 所以看似随机尽管网络连接很好。我不知道为什么会发生这种情况,也不知道处理它的正确方法是什么 - 确保我能抓住并忽略它。但是请求永远不会进入服务器并且不执行操作 - 不是很好的错误处理。

有关此应用的一些数据 - 这可能有助于缩小范围或希望解决问题:

  • GWT 2.4 with Sencha GXT 3.0.1
  • 在最新版本的所有顶级浏览器中出现:IE,Chrome,Firefox
  • 使用Cloudflare我也尝试过没有它 - 但这是同样的问题。所以这似乎不是通过使用此代理服务来创建的。

非常感谢每一个提示和每个想法如何处理/解决这个问题。

4 个答案:

答案 0 :(得分:5)

由于没有HTTP状态代码0,这似乎不是来自服务器 - 使用Firebug或其他东西进行测试可能是值得的,只是为了确保没有像这样的错误响应。< / p>

相反,这几乎可以肯定来自浏览器本身,连接超时或被服务器删除,或者浏览器无法访问服务器(坏dns,坏网关,丢失wifi,服务器不可用)。

将此视为任何意外的服务器故障 - 可能会退回并再次尝试,向用户显示消息,记录错误并在连接再次工作时发送该消息。

在所有浏览器中发生的事实都指向网络或服务器问题 - 所有浏览器都不可能以不可预测的方式一起失败。这一事实也使调试变得更容易 - 您可以使用自己喜欢的浏览器调试工具。

答案 1 :(得分:2)

如果我们的身份验证层确定会话已过期并将RPC请求重定向到其他主机上的登录页面,则会发生这种情况。由于AJAX请求无法转到其他主机,因此浏览器会中止请求并发出状态码0的信号。请参阅https://code.google.com/p/google-web-toolkit/issues/detail?id=2858

它也很疯狂,因为即使Firebug / Chrome Inspector中出现的HTTP代码显然是302,GWT也会抛出一个代码为0的StatusCodeException。

答案 2 :(得分:2)

虽然原始海报可能存在网络连接问题,但我今天在GWT托管模式下遇到了同样的错误。而不是有时候,而是所有的时间。

我现在已经弄明白了,我想在这里分享一下,以便寻找0状态代码问题的其他人可以找到它。

如果您使用GWT提供的Rpc安全令牌(如本说明中所述:http://www.gwtproject.org/doc/latest/DevGuideSecurityRpcXsrf.html)来反对跨站点脚本,但是您忘记了出于任何原因设置安全令牌,那么您可能遇到的一件事就是零结果。

我设计了我的web应用程序,以便大多数RPC调用主要在框架内完成。今天我需要手工创建RPC服务。忘了设置RPCToken,从服务器得到空响应。

希望这可以帮助别人。

答案 3 :(得分:1)

我发现如果你在服务器上挂起一个rpc调用(Thread.wait())并刷新浏览器然后在客户端再次加载页面之前它会调用等待回调的onFailure方法使用上面提到的状态代码表明它在客户端中是orginates,或者它是非特定捕获异常的通用错误代码。