Using JAX-WS
The WSDL, JAX-RPC mapping, and webservices.xml files sure are a lot of things to define just to expose your stateless EJB as a web service. It should be easier to publish an EJB as a web service—and it is. One of the goals of the JAX-WS specification was to make the JAX-RPC API and deployment model easier to use. To this end, the specification provides an extensive set of annotations, most of which are based on JSR-181 (“Web Services Metadata for the Java Platform”). These annotations make it much simpler to define a web service. Keeping with the spirit of EJB 3.1, all JAX-WS annotations have reasonable defaults. In the following example, it takes nothing more than adding two annotations to transform a stateless EJB into a web service:
package com.titan.webservice; import javax.ejb.Stateless; import javax.jws.WebService; import javax.jws.WebMethod; @Stateless @WebService public class TravelAgentBean { @WebMethod public String makeReservation(int cruiseId, int cabinId, int customerId, double price) { ... } }
The @WebService Annotation
The main annotation for defining a web service is @javax.jws.WebService. This annotation must be
placed on the stateless session bean implementation class in order to
expose it as a web service:
package javax.jws; @Target({TYPE}) @Retention(value=RetentionPolicy.RUNTIME) public @interface WebService { String name( ) default ""; String targetNamespace( ) default ""; String serviceName( ) default ""; String wsdlLocation( ) default ""; String ...