public abstract class

AbstractRemoteServiceServlet

extends HttpServlet
java.lang.Object
   ↳ javax.servlet.GenericServlet
     ↳ javax.servlet.http.HttpServlet
       ↳ com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet
Known Direct Subclasses
Known Indirect Subclasses

Class Overview

An abstract base class containing utility methods.

Summary

Fields
protected ThreadLocal<HttpServletRequest> perThreadRequest
protected ThreadLocal<HttpServletResponse> perThreadResponse
Public Constructors
AbstractRemoteServiceServlet()
Public Methods
final void doPost(HttpServletRequest request, HttpServletResponse response)
Standard HttpServlet method: handle the POST.
Protected Methods
void doUnexpectedFailure(Throwable e)
Override this method to control what should happen when an exception escapes the doPost(HttpServletRequest, HttpServletResponse) method.
final String getPermutationStrongName()
Returns the strong name of the permutation, as reported by the client that issued the request, or null if it could not be determined.
final HttpServletRequest getThreadLocalRequest()
Gets the HttpServletRequest object for the current call.
final HttpServletResponse getThreadLocalResponse()
Gets the HttpServletResponse object for the current call.
void onAfterRequestDeserialized(RPCRequest rpcRequest)
Override this method to examine the deserialized version of the request before the call to the servlet method is made.
abstract void processPost(HttpServletRequest request, HttpServletResponse response)
Called by doPost(HttpServletRequest, HttpServletResponse) for type-specific processing of the request.
String readContent(HttpServletRequest request)
Override this method in order to control the parsing of the incoming request.
[Expand]
Inherited Methods
From class javax.servlet.http.HttpServlet
From class javax.servlet.GenericServlet
From class java.lang.Object
From interface javax.servlet.Servlet
From interface javax.servlet.ServletConfig

Fields

protected ThreadLocal<HttpServletRequest> perThreadRequest

protected ThreadLocal<HttpServletResponse> perThreadResponse

Public Constructors

public AbstractRemoteServiceServlet ()

Public Methods

public final void doPost (HttpServletRequest request, HttpServletResponse response)

Standard HttpServlet method: handle the POST. Delegates to processPost(HttpServletRequest, HttpServletResponse). This doPost method swallows ALL exceptions, logs them in the ServletContext, and returns a GENERIC_FAILURE_MSG response with status code 500.

Protected Methods

protected void doUnexpectedFailure (Throwable e)

Override this method to control what should happen when an exception escapes the doPost(HttpServletRequest, HttpServletResponse) method. The default implementation will log the failure and send a generic failure response to the client.

An "expected failure" is an exception thrown by a service method that is declared in the signature of the service method. These exceptions are serialized back to the client, and are not passed to this method. This method is called only for exceptions or errors that are not part of the service method's signature, or that result from SecurityExceptions, SerializationExceptions, or other failures within the RPC framework.

Note that if the desired behavior is to both send the GENERIC_FAILURE_MSG response AND to rethrow the exception, then this method should first send the GENERIC_FAILURE_MSG response itself (using getThreadLocalResponse), and then rethrow the exception. Rethrowing the exception will cause it to escape into the servlet container.

Parameters
e the exception which was thrown

protected final String getPermutationStrongName ()

Returns the strong name of the permutation, as reported by the client that issued the request, or null if it could not be determined. This information is encoded in the {@value com.google.gwt.user.client.rpc.RpcRequestBuilder#STRONG_NAME_HEADER} HTTP header.

protected final HttpServletRequest getThreadLocalRequest ()

Gets the HttpServletRequest object for the current call. It is stored thread-locally so that simultaneous invocations can have different request objects.

protected final HttpServletResponse getThreadLocalResponse ()

Gets the HttpServletResponse object for the current call. It is stored thread-locally so that simultaneous invocations can have different response objects.

protected void onAfterRequestDeserialized (RPCRequest rpcRequest)

Override this method to examine the deserialized version of the request before the call to the servlet method is made. The default implementation does nothing and need not be called by subclasses.

protected abstract void processPost (HttpServletRequest request, HttpServletResponse response)

Called by doPost(HttpServletRequest, HttpServletResponse) for type-specific processing of the request. Because doPost swallows all Throwables, this method may throw any exception the implementor wishes.

Throws
Throwable

protected String readContent (HttpServletRequest request)

Override this method in order to control the parsing of the incoming request. For example, you may want to bypass the check of the Content-Type and character encoding headers in the request, as some proxies re-write the request headers. Note that bypassing these checks may expose the servlet to some cross-site vulnerabilities. Your implementation should comply with the HTTP/1.1 specification, which includes handling both requests which include a Content-Length header and requests utilizing Transfer-Encoding: chuncked.

Parameters
request the incoming request
Returns
  • the content of the incoming request encoded as a string.
Throws
IOException
ServletException