25.2. Creating a Service Object
Overview
The
javax.xml.ws.Service
class represents the wsdl:service
element which contains the definition of all of the endpoints that expose a service. As such, it provides methods that allow you to get endpoints, defined by wsdl:port
elements, that are proxies for making remote invocations on a service.
Note
The
Service
class provides the abstractions that allow the client code to work with Java types as opposed to working with XML documents.
The create() methods
The
Service
class has two static create()
methods that can be used to create a new Service
object. As shown in Example 25.1, “Service
create()
Methods”, both of the create()
methods take the QName of the wsdl:service
element the Service
object will represent, and one takes a URI specifying the location of the WSDL contract.
Note
All services publish their WSDL contracts. For SOAP/HTTP services the URI is usually the URI for the service appended with
?wsdl
.
Example 25.1. Service
create()
Methods
public static Service create(URL wsdlLocation,
QName serviceName)
throws WebServiceException;
public static Service create(QName serviceName)
throws WebServiceException;
The value of the
serviceName
parameter is a QName. The value of its namespace part is the target namespace of the service. The service's target namespace is specified in the targetNamespace property of the @WebService
annotation. The value of the QName's local part is the value of wsdl:service
element's name
attribute. You can determine this value in one of the following ways:
- It is specified in the serviceName property of the
@WebService
annotation. - You append
Service
to the value of the name property of the@WebService
annotation. - You append
Service
to the name of the SEI.
Example
Example 25.2, “Creating a
Service
Object” shows code for creating a Service
object for the SEI shown in Example 24.7, “Fully Annotated SEI”.
Example 25.2. Creating a Service
Object
The code in Example 25.2, “Creating a
Service
Object” does the following:
- 1
- Builds the QName for the service using the targetNamespace property and the name property of the
@WebService
annotation. - 2
- Calls the single parameter
create()
method to create a newService
object.NoteUsing the single parametercreate()
frees you from having any dependencies on accessing a WSDL contract.