Google Web Toolkit Asynchronous Call from a Service Implementation

Posted by Thor Thurn on Stack Overflow See other posts from Stack Overflow or by Thor Thurn
Published on 2010-06-07T02:09:30Z Indexed on 2010/06/07 2:12 UTC
Read the original article Hit count: 345

Filed under:
|
|

I'm writing a simple Google Web Toolkit service which acts as a proxy, which will basically exist to allow the client to make a POST to a different server. The client essentially uses this service to request an HTTP call. The service has only one asynchronous method call, called ajax(), which should just forward the server response. My code for implementing the call looks like this:

class ProxyServiceImpl extends RemoteServiceServlet implements ProxyService {
    @Override
    public Response ajax(String data) {
        RequestBuilder rb = /*make a request builder*/
        RequestCallback rc = new RequestCallback() {
            @Override
            public void onResponseReceived(Response response) {
                /* Forward this response back to the client as the return value of 
                   the ajax method... somehow... */
            }
         };
         rb.sendRequest(data, requestCallback);
         return /* The response above... except I can't */;
    }
}

You can see the basic form of my problem, of course. The ajax() method is used asynchronously, but GWT decides to be smart and hide that from the dumb old developer, so they can just write normal Java code without callbacks. GWT services basically just do magic instead of accepting a callback parameter.

The trouble arises, then, because GWT is hiding the callback object from me. I'm trying to make my own asynchronous call from the service implementation, but I can't, because GWT services assume that you behave synchronously in service implementations. How can I work around this and make an asynchronous call from my service method implementation?

© Stack Overflow or respective owner

Related posts about java

Related posts about gwt