Central to the Spring remoting architecture are the concepts of a service exporter and a proxy generator. One of the first tasks that you need to perform when you build a distributed application is to expose your remote services so that clients can access them. Spring simplifies this by providing a set of service exporters that allow you to configure and expose services declaratively, thus dramatically reducing the amount of code you need to write to expose remote services.
Once you have exposed a remote service, you need to create a client that accesses the service. This is often one of the most complex areas of building a distributed application because you often need to be intimately aware of the plumbing of your remote architecture of choice. With Spring, you can use a proxy generator to create a proxy to the remote resource; this allows you to access the remote service via a simple Java interface. By using this approach, you not only reduce the complexity of client code, because Spring is dealing with the plumbing, but you also decouple your application from your chosen remote architecture, because Spring hides all the implementation-level details.
Both of these components are available for four of the five remoting architectures supported by Spring. In the case of JAXRPC, there is no service exporter because the method for service exposure is dependent on the JAXRPC implementation you are using. However, Spring does provide the ServletEndpointSupport class to simplify the creation of JAXRPC service endpoints that are exposed via a servlet.