Java Reference
In-Depth Information
import javax.jws.soap.SOAPBinding;
@WebService(targetNamespace = "http://www.packtpub.com/",
serviceName = "CalculatePowerService")
@SOAPBinding(style = SOAPBinding.Style.RPC)
public class CalculatePowerWebService {
@WebMethod
@WebResult(name = "result")
public double calculatePower(@WebParam(name = "base")
double base,
@WebParam(name =
"exponent") double exponent) {
return Math.pow(base, exponent);
}
}
Inside the
@WebService
annotation, you can specify additional elements, such as the
targetNamespace
element that declares the namespace used for the WSDL elements
generated by the web service. If you don't specify this element, the web service container
will use the Java package name to generate a default XML namespace.
You can also use the
serviceName
element to specify the service name. The name spe-
cified using
serviceName
is used to generate the name attribute in the service element
in the WSDL interface. If you don't specify the
serviceName
element, the server will
generate it using the default value, which is the bean class name appended with the ser-
vice.
In the next row, we state that the web service is of the type
Remote Procedure Call
using
the
@javax.jws.SOAPBinding
annotation. The possible values are
DOCUMENT
and
RPC
, the first one being the default value.
Note
The choice between the RPC and Document style boils down to the different ways we can
construct services using these two styles. The body of an RPC-style SOAP message is
constructed in a specific way, which is defined in the SOAP standard. This is built on the
assumption that you want to call the web service just like you would call a normal func-
tion or method that is part of your application code.