In this chapter, you learned how to create and access remote services using Spring and a wide variety of different remoting architectures. In the first part of the chapter, you saw how to use Spring remoting to simplify the creation of RMI-based services and how you can use Spring to create and access CORBA services via JNDI. In the second part of the chapter, you explored how to create and access SOAP web services using Spring's support for JAXRPC. We then introduced you to Spring's native remoting solution—HTTP Invoker. Using the HTTP Invoker architecture, you can easily expose and access remote services over HTTP, using Java serialization to format complex object graphs to be transmitted across the wire. We then covered how to expose services over HTTP using the Hessian binary protocol. You saw how Hessian provides a viable solution for many use cases even in heterogeneous environments, although we did highlight that Hessian has some problems with complex object graphs that you do not encounter when you are using the HTTP Invoker architecture.
In the next chapter, you will see how to use the Spring MVC framework to build complex web applications in a simple and organized manner. You will explore how to take advantage of the Spring Controller architecture to solve common problems such as adding CRUD behavior to an application and building wizard-style forms that span multiple pages.