Chapter 35. Java-First Service Implementation

35.1. Java-First Overview

Overview

The Java-first approach is a convenient way to get started with Web services, if you are unfamiliar with WSDL syntax. Using this approach, you can define the Web service interface using an ordinary Java interface and then use the provided Apache CXF utilities to generate the corresponding WSDL contract from the Java interface.
Note
There is no demonstration code to accompany this example.

Service Endpoint Interface (SEI)

An SEI is an ordinary Java interface. In order to use the standard JAX-WS frontend, the SEI must be annotated with the @WebService annotation.[1]
In the Java-first approach, the SEI is the starting point for implementing the Web service and it plays a central role in the development of the Web service implementation. The SEI is used in the following ways:
  • Base type of the Web service implementation (server side)—you define the Web service by implementing the SEI.
  • Proxy type (client side)—on the client side, you use the SEI to invoke operations on the client proxy object.
  • Basis for generating the WSDL contract—in the Java-first approach, you generate the WSDL contract by converting the SEI to WSDL.

WSDL contract

The WSDL contract is a platform-neutral and language-neutral description of the Web service interface. When you want to make the Web service available to third-party clients, you should publish the WSDL contract to some well-known location. The WSDL contract contains all of the metadata required by WS clients.

The CustomerService demonstration

Figure 35.1, “Building a Java-First Web Service” shows an overview of the files required to implement and build the CustomerService Web service using the Java-first approach.

Figure 35.1. Building a Java-First Web Service

Building a Java-First Web Service

Implementing and building the service

To implement and build the Java-first example shown in Figure 35.1, “Building a Java-First Web Service”, you would perform the following steps:
  1. Implement the SEI, which constitutes the basic definition of the Web service's interface.
  2. Annotate the SEI (you can use the annotations to influence the ultimate form of the generated WSDL contract).
  3. Implement any other requisite Java classes. In particular, implement the following:
    • Any data types referenced by the SEI—for example, the Customer class.
    • The implementation of the SEI, CustomerServiceImpl.
  4. Instantiate the Web service endpoint, by adding the appropriate code to a Spring XML file.
  5. Generate the WSDL contract using a Java-to-WSDL converter.


[1] If the SEI is left without annotations, Apache CXF defaults to using the simple frontend. This is a non-standard frontend, which is not recommended for most applications.