The objective here is to demonstrate how the Spring framework could be used to provide an end-to-end service-oriented solution as an alternative to JAX-WS and EJB3.
Introduction Classic JEE application architecture generally employs EJB to implement business logic, which present day EJB3 frameworks have adapted to provide a POJO based programming model employing ideas such as dependency injection (DI) and aspect-oriented programming (AOP) all within the scope of an EJB container integrated within an application server to provide a scalable and highly optimized runtime environment.
Spring Web Services (Spring-WS) is a product of the Spring community focused on creating document-driven Web services.
Spring-WS facilitates contract-first SOAP service development, allowing for a number of ways to manipulate XML payloads.
As picture describes, we have User Profile Service web service with User Profile operations which accepts User Profile Request as input and returns User Profile Response. Spring Web Services takes care about all boiler-plate code and allows to concentrate on what really matters - implementation. Aside from very basic features, Spring Web Services allows to configure response/request validation (against XSD schema).
In case of exception, User Profile Fault has been returned. JAXBElement; import org.springframework.beans.factory.annotation. To do that, we need just to add validation interceptor to the application context: Also, Spring Web Services allows to define our own SOAP fault handlers (based on exception pattern) and much more!
We will be building and running our example using Apache Maven.
These are developed in a Maven2 build environment with testing through JUnit4 and reporting via PMD and Cobertura.
This installment will add a SOAP service but we will put off writing the client until the next article and in its place we will utilize an useful application called Soap UI to test our SOAP service.
The following step by step tutorial illustrates a basic example in which we will configure, build and run a Hello World contract first client and endpoint using a WSDL, Spring-WS, Spring Boot and Maven.
The tutorial code is organized in such a way that you can choose to only run the client (consumer) or endpoint (provider) part.