Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting com.google.gwt.user.client.rpc.StatusCodeException: 0 in GWT

I sometimes/often get this Exception in GWT but don't know why:

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)

After spending some time Googling i found this: http://www.mail-archive.com/[email protected]/msg79537.html

There an interesting hint was given: it occured if you disconnect your WLAN and connect again - then the error arises. I tried this on my notebook - then the exception occurs.

Another problem is this exception arises sometimes (not really always at the same time or when executing a specific action - so seemingly random) although the network connection is fine. I don't know why this happens nor what's the correct way to handle it - sure I can catch and ignore it. But the request never goes to the server and the action is not executed - not quite a good error handling.

Some data about this app - maybe this helps narrowing or hopefully solving the problem:

  • GWT 2.4 with Sencha GXT 3.0.1
  • Occurs on all the top browsers in newest version: IE, Chrome, Firefox
  • Using Cloudflare (I also tried without it - but it's the same problem. So this seems not to be originated by using this Proxy-Service.)

Thanks a lot for every hint and every idea how to handle/solve this.

like image 813
Patrick Meier Avatar asked Sep 27 '12 14:09

Patrick Meier


4 Answers

Since there is no HTTP status code 0, this appears not to be from the server - it could be worthwhile to test using Firebug or something, just to make sure that there isn't a bad response like this coming back.

Instead, this is almost certainly from the browser itself, either the connection timed out or was dropped by the server, or the browser couldn't reach the server (bad dns, bad gateway, lost wifi, server not available).

Treat this like any unexpected server failure - perhaps back off and try again, display a message to the user, log an error and send that when the connections are working again.

The fact that it is happening in all browsers points to a network or server issue - it is extremely unlikely that all browsers are failing in unpredictable ways together. This fact also makes it easier to debug - you can use your favorite browser's debug tools.

like image 56
Colin Alworth Avatar answered Nov 18 '22 02:11

Colin Alworth


This happens to us if our authentication layer determines that a session has expired and redirects an RPC request to the login page on a different host. Since AJAX requests cant go to a different host, the browser aborts the request and signals status code 0. See https://code.google.com/p/google-web-toolkit/issues/detail?id=2858

Its crazy too because GWT will throw a StatusCodeException with code 0 even though the HTTP code that appears in Firebug / Chrome Inspector is clearly a 302.

like image 21
David Mann Avatar answered Nov 18 '22 00:11

David Mann


Although the original poster probably had issues with their network connection I got the same error today inside GWT hosted mode. And not sometimes, but all the time.

I have now figured it out, and I'd like to share it here so other people searching for a sollution to the 0 status code problem can find it.

If you use the Rpc security tokens that GWT provides (as in this explanation: http://www.gwtproject.org/doc/latest/DevGuideSecurityRpcXsrf.html) against cross site scripting but you forget to set the security token for whatever reason then one of the things you might run into is the zero result.

I've designed my webapplication so that most RPC calls are mostly made within a framework. Today I needed to create an RPC service by hand. Forgot to set the RPCToken, got empty response from the server.

Hope this helps somebody out.

like image 2
prinsarian Avatar answered Nov 18 '22 01:11

prinsarian


I have found that if you hang an rpc call on the server (Thread.wait()) and the browser is refreshed then on the client side just before it loads the page again it will call the onFailure method of the waiting callback with the above mentioned status code which suggests it orginates in the client or that it is a generic error code for non-specific caught exceptions.

like image 1
user2219808 Avatar answered Nov 18 '22 01:11

user2219808