# Package com.google.gwt.user.server.rpc

Classes used in server-side implementation of remote procedure calls.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  SerializationPolicyProvider | Used to obtain a `SerializationPolicy` for a given module base URL and serialization policy strong name.

- Class Summary
  Class | Description
  --- | ---
  AbstractRemoteServiceServlet | An abstract base class containing utility methods.
  AbstractXsrfProtectedServiceServlet | An abstract class for XSRF protected RPC service implementations, which decides if XSRF protection should be enforced on a method invocation based on the following logic: RPC interface or method can be annotated with either `XsrfProtect` or `NoXsrfProtect` annotation to enable or disable XSRF protection on all methods of an RPC interface or a single method correspondingly.
  HybridServiceServlet | EXPERIMENTAL and subject to change.
  RemoteServiceServlet | 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.
  RPC | Utility class for integrating with the RPC system.
  RPCRequest | Describes an incoming RPC request in terms of a resolved `Method` and an array of arguments.
  RPCServletUtils | Utility class containing helper methods used by servlets that integrate with the RPC system.
  SerializationPolicy | This is an abstract class for representing the serialization policy for a given module and `RemoteService`.
  SerializationPolicyLoader | API for loading a `SerializationPolicy`.
  ServerCustomFieldSerializer<T> | An interface that may be implemented by server-side class-based custom field serializers.
  XsrfProtectedServiceServlet | EXPERIMENTAL and subject to change.
  XsrfTokenServiceServlet | EXPERIMENTAL and subject to change.

- Exception Summary
  Exception | Description
  --- | ---
  UnexpectedException | The GWT RPC class throws UnexpectedException when a service method, being invoked by GWT RPC, throws a checked exception that is not in the service method's signature.

- Annotation Types Summary
  Annotation Type | Description
  --- | ---
  NoXsrfProtect | Annotation on RPC interfaces and methods indicating that they do not need to be XSRF protected.
  XsrfProtect | Annotation for RPC interfaces and methods indicating that they should be XSRF protected.

## Package com.google.gwt.user.server.rpc Description

Classes used in server-side implementation of remote procedure calls.

The `RemoteServiceServlet` class provides the most convenient implementation of server-side GWT RPC. This class can be used in two ways: it can be subclassed by servlets that directly implement one or more service interfaces, in which case incoming RPC calls will be directed to the servlet subclass itself; or it can be overridden to give finer control over routing RPC calls within a server framework. (For more details on the latter, see the `RemoteServiceServlet.processCall(String)` method.)

Alternatively, GWT RPC can be integrated into an existing framework, by using the `RPC` class to perform GWT RPC decoding, invocation, and encoding. RemoteServiceServlet need not be subclassed at all in this case, though reading its source is advisable.

Note that the default RemoteServiceServlet implementation never throws exceptions to the servlet container. All exceptions that escape the the `RemoteServiceServlet.processCall(String)` method will be caught, logged in the servlet context, and will cause a generic failure message to be sent to the GWT client -- with a 500 status code. To customize this behavior, override `RemoteServiceServlet.doUnexpectedFailure(java.lang.Throwable)`.