com.google.gwt.user.server.rpc
Class RemoteServiceServlet

java.lang.Object
  extended by javax.servlet.GenericServlet
      extended by javax.servlet.http.HttpServlet
          extended by com.google.gwt.user.server.rpc.RemoteServiceServlet
All Implemented Interfaces:
java.io.Serializable, javax.servlet.Servlet, javax.servlet.ServletConfig

public class RemoteServiceServlet
extends javax.servlet.http.HttpServlet

The servlet base class for your RPC service implementations that automatically deserializes incoming requests from the client and serializes outgoing responses for client/server RPCs.

See Also:
Serialized Form

Constructor Summary
RemoteServiceServlet()
          The default constructor.
 
Method Summary
 void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
          This is called internally.
protected  javax.servlet.http.HttpServletRequest getThreadLocalRequest()
          Gets the HttpServletRequest object for the current call.
protected  javax.servlet.http.HttpServletResponse getThreadLocalResponse()
          Gets the HttpServletResponse object for the current call.
protected  void onAfterResponseSerialized(java.lang.String serializedResponse)
          Override this method to examine the serialized response that will be returned to the client.
protected  void onBeforeRequestDeserialized(java.lang.String serializedRequest)
          Override this method to examine the serialized version of the request payload before it is deserialized into objects.
 java.lang.String processCall(java.lang.String payload)
          This is public so that it can be unit tested easily without HTTP.
protected  boolean shouldCompressResponse(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response, java.lang.String responsePayload)
          Determines whether the response to a given servlet request should or should not be GZIP compressed.
 
Methods inherited from class javax.servlet.http.HttpServlet
doDelete, doGet, doHead, doOptions, doPut, doTrace, getLastModified, service, service
 
Methods inherited from class javax.servlet.GenericServlet
destroy, getInitParameter, getInitParameterNames, getServletConfig, getServletContext, getServletInfo, getServletName, init, init, log, log
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RemoteServiceServlet

public RemoteServiceServlet()
The default constructor.

Method Detail

doPost

public final void doPost(javax.servlet.http.HttpServletRequest request,
                         javax.servlet.http.HttpServletResponse response)
This is called internally.

Overrides:
doPost in class javax.servlet.http.HttpServlet

processCall

public java.lang.String processCall(java.lang.String payload)
                             throws SerializationException
This is public so that it can be unit tested easily without HTTP.

Throws:
SerializationException

getThreadLocalRequest

protected final javax.servlet.http.HttpServletRequest getThreadLocalRequest()
Gets the HttpServletRequest object for the current call. It is stored thread-locally so that simultaneous invocations can have different request objects.


getThreadLocalResponse

protected final javax.servlet.http.HttpServletResponse getThreadLocalResponse()
Gets the HttpServletResponse object for the current call. It is stored thread-locally so that simultaneous invocations can have different response objects.


onAfterResponseSerialized

protected void onAfterResponseSerialized(java.lang.String serializedResponse)
Override this method to examine the serialized response that will be returned to the client. The default implementation does nothing and need not be called by subclasses.


onBeforeRequestDeserialized

protected void onBeforeRequestDeserialized(java.lang.String serializedRequest)
Override this method to examine the serialized version of the request payload before it is deserialized into objects. The default implementation does nothing and need not be called by subclasses.


shouldCompressResponse

protected boolean shouldCompressResponse(javax.servlet.http.HttpServletRequest request,
                                         javax.servlet.http.HttpServletResponse response,
                                         java.lang.String responsePayload)
Determines whether the response to a given servlet request should or should not be GZIP compressed. This method is only called in cases where the requestor accepts GZIP encoding.

This implementation currently returns true if the response string's estimated byte length is longer than 256 bytes. Subclasses can override this logic.

Parameters:
request - the request being served
response - the response that will be written into
responsePayload - the payload that is about to be sent to the client
Returns:
true if responsePayload should be GZIP compressed, otherwise false.