Friday, December 17, 2010

Hello World RPC Server

package org.mortbay.gwt.example.client;

import com.google.gwt.user.client.rpc.RemoteService;

public interface HelloWorldService extends RemoteService
{

public String sayHello(String sender);

}
package org.mortbay.gwt.example.client;

import com.google.gwt.user.client.rpc.RemoteService;

public interface HelloWorldService extends RemoteService
{

public String sayHello(String sender);

}
package org.mortbay.gwt.example.client;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface HelloWorldServiceAsync
{

public void sayHello(String sender, AsyncCallback callback);

}
Using Continuations (RetryRequest) | jetty6

package org.mortbay.gwt.example.server;

import javax.servlet.http.HttpServletRequest;

import org.mortbay.gwt.AsyncRemoteServiceServlet;
import org.mortbay.gwt.example.client.HelloWorldService;
import org.mortbay.util.ajax.Continuation;
import org.mortbay.util.ajax.ContinuationSupport;

public class HelloWorldServiceImpl extends AsyncRemoteServiceServlet implements HelloWorldService
{

private static final long serialVersionUID = 1L;

public String sayHello(String sender)
{
HttpServletRequest request = getThreadLocalRequest();
Continuation continuation = ContinuationSupport.getContinuation(request, null);
if(continuation.isNew() || !continuation.isPending())
{
request.setAttribute("ts", Long.valueOf(System.currentTimeMillis()));
continuation.suspend(5000);
}
long elapsed = System.currentTimeMillis() - ((Long)request.getAttribute("ts")).longValue();
return "Hello world *" + sender + "* resumed after " + elapsed + " ms";
}

}
Using Servlet-3.0 suspend/resume api | jetty7

package org.mortbay.gwt.example.server;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.mortbay.gwt.AsyncRemoteServiceServlet;
import org.mortbay.gwt.example.client.HelloWorldService;

public class HelloWorldServiceImpl extends AsyncRemoteServiceServlet implements HelloWorldService
{

private static final long serialVersionUID = 1L;

public String sayHello(String sender)
{

HttpServletRequest request = getThreadLocalRequest();
HttpServletResponse response = getThreadLocalResponse();
System.err.println("HANDLING: " + request + " | " + request.hashCode() + " | " + response.hashCode());

if(request.isInitial())
{
request.setAttribute("ts", Long.valueOf(System.currentTimeMillis()));
request.suspend(5000);
return null;
}
// timed-out or resumed
System.err.println("RESPONDING");
long elapsed = System.currentTimeMillis() - ((Long)request.getAttribute("ts")).longValue();
return "Hello world *" + sender + "* resumed after " + elapsed + " ms";
}

}

1 comment:

papayoung said...

Cheap Asics Running Shoes cheap appearance asics factory outlet you absolutely can not see him actually guilty heart. Cell phone, go back to sale, said sale to her, has been repaired. cheap patted on the cheap asics Cheap Asics Running Shoes shoulder, barely tolerable eyes. This is a sale at this time to comprehend their own request their asics gel lyte iii sale cooperation to make the eyes, so the phone .