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

java.lang.Object
  extended by HttpServlet
      extended by com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet
          extended by com.google.gwt.user.server.rpc.RemoteServiceServlet
All Implemented Interfaces:
SerializationPolicyProvider
Direct Known Subclasses:
RemoteLoggingServiceImpl

public class RemoteServiceServlet
extends AbstractRemoteServiceServlet
implements SerializationPolicyProvider

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.


Constructor Summary
RemoteServiceServlet()
          The default constructor.
 
Method Summary
 SerializationPolicy getSerializationPolicy(java.lang.String moduleBaseURL, java.lang.String strongName)
          Returns a SerializationPolicy for a given module base URL and serialization policy strong name.
 java.lang.String processCall(java.lang.String payload)
          Process a call originating from the given request.
 void processPost(HttpServletRequest request, HttpServletResponse response)
          Standard HttpServlet method: handle the POST.
 
Methods inherited from class com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet
doPost
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RemoteServiceServlet

public RemoteServiceServlet()
The default constructor.

Method Detail

getSerializationPolicy

public final SerializationPolicy getSerializationPolicy(java.lang.String moduleBaseURL,
                                                        java.lang.String strongName)
Description copied from interface: SerializationPolicyProvider
Returns a SerializationPolicy for a given module base URL and serialization policy strong name.

Specified by:
getSerializationPolicy in interface SerializationPolicyProvider
Parameters:
moduleBaseURL - the URL for the module
strongName - strong name of the serialization policy for the specified module URL
Returns:
a SerializationPolicy for a given module base URL and RPC strong name; must not return null

processCall

public java.lang.String processCall(java.lang.String payload)
                             throws SerializationException
Process a call originating from the given request. Uses the RPC.invokeAndEncodeResponse(Object, java.lang.reflect.Method, Object[]) method to do the actual work.

Subclasses may optionally override this method to handle the payload in any way they desire (by routing the request to a framework component, for instance). The HttpServletRequest and HttpServletResponse can be accessed via the AbstractRemoteServiceServlet.getThreadLocalRequest() and AbstractRemoteServiceServlet.getThreadLocalResponse() methods.

This is public so that it can be unit tested easily without HTTP.

Parameters:
payload - the UTF-8 request payload
Returns:
a string which encodes either the method's return, a checked exception thrown by the method, or an IncompatibleRemoteServiceException
Throws:
SerializationException - if we cannot serialize the response
UnexpectedException - if the invocation throws a checked exception that is not declared in the service method's signature
java.lang.RuntimeException - if the service method throws an unchecked exception (the exception will be the one thrown by the service)

processPost

public final void processPost(HttpServletRequest request,
                              HttpServletResponse response)
                       throws java.io.IOException,
                              ServletException,
                              SerializationException
Standard HttpServlet method: handle the POST. This doPost method swallows ALL exceptions, logs them in the ServletContext, and returns a GENERIC_FAILURE_MSG response with status code 500.

Throws:
ServletException
SerializationException
java.io.IOException