10

我有时/经常在 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 与 Sencha GXT 3.0.1
  • 出现在最新版本的所有顶级浏览器上:IE、Chrome、Firefox
  • 使用Cloudflare我也尝试过不使用它 - 但这是同样的问题。所以这似乎不是由使用此代理服务引起的。

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

4

4 回答 4

5

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

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

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

它发生在所有浏览器中的事实表明存在网络或服务器问题 - 所有浏览器都以不可预知的方式一起失败是极不可能的。这一事实也使调试变得更容易——您可以使用您喜欢的浏览器的调试工具。

于 2012-09-27T16:49:04.410 回答
2

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

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

于 2014-05-01T20:17:29.770 回答
2

尽管原始发布者的网络连接可能存在问题,但我今天在 GWT 托管模式下遇到了同样的错误。而且不是有时,而是一直。

我现在已经弄清楚了,我想在这里分享它,以便其他寻找 0 状态码问题的解决方案的人可以找到它。

如果您使用 GWT 提供的 Rpc 安全令牌(如本说明: http: //www.gwtproject.org/doc/latest/DevGuideSecurityRpcXsrf.html)对抗跨站点脚本,但您出于某种原因忘记设置安全令牌您可能会遇到的一件事是零结果。

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

希望这可以帮助某人。

于 2014-06-04T19:21:13.427 回答
1

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

于 2014-11-01T23:41:59.103 回答