Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Right Click on the WebContent subfolder and Select New->Other.





  2. Select Web Services->wsdl and click Next.





  3. Give the File name as CalculatorService.wsdl and click Next.





  4. On the next window give the Target namespace as "http://jws.samples.geronimo.apache.org". Select Finish.





  5. Modify the CalculatorService.wsdl as follows
    Code Block
    titleCalculatorService.wsdl
    borderStylesolid
    <wsdl:definitions name="Calculator"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://jws.samples.geronimo.apache.org"
    xmlns:tns="http://jws.samples.geronimo.apache.org">
    <wsdl:types>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns="http://jws.samples.geronimo.apache.org"
    targetNamespace="http://jws.samples.geronimo.apache.org"
    attributeFormDefault="unqualified"
    elementFormDefault="qualified">
    <xsd:element name="add">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="value1" type="xsd:int"/>
    <xsd:element name="value2" type="xsd:int"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    <xsd:element name="addResponse">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="return" type="xsd:int"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    </wsdl:types>
    <wsdl:message name="add">
    <wsdl:part name="add" element="tns:add"/>
    </wsdl:message>
    <wsdl:message name="addResponse">
    <wsdl:part name="addResponse" element="tns:addResponse"/>
    </wsdl:message>
    <wsdl:portType name="CalculatorPortType">
    <wsdl:operation name="add">
    <wsdl:input name="add" message="tns:add"/>
    <wsdl:output name="addResponse" message="tns:addResponse"/>
    </wsdl:operation>
    </wsdl:portType>
    <wsdl:binding name="CalculatorSoapBinding"
    type="tns:CalculatorPortType">
    <soap:binding style="document"
    transport="http://schemas.xmlsoap.org/soap/http"/>
    <wsdl:operation name="add">
    <soap:operation soapAction="add" style="document"/>
    <wsdl:input name="add">
    <soap:body use="literal"/>
    </wsdl:input>
    <wsdl:output name="addResponse">
    <soap:body use="literal"/>
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
    <wsdl:service name="Calculator">
    <wsdl:port name="CalculatorPort"
    binding="tns:CalculatorSoapBinding">
    <soap:address location="http://localhost:8080/jaxwscalculator-
    1.0/calculator"/>
    <wswa:UsingAddressing
    xmlns:wswa="http://www.w3.org/2005/08/addressing/wsdl"/>
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>
    
    Warning
    titleWarning

    add explanation for the code

    This completes the creation of wsdl for web service.

Creating the Implementation code

To implement the Calculator we are going to create a package org.apache.geronimo.samples.jws. This package will contain 2 classes. A Calculator Interface, and CalculatorService which implements the Calculator interface. Lets go step by step with creating the package, interface class and implementation class.

  1. Right click on Java Resources: src and select New->Package.
    !!
  2. Name the package as org.apache.geronimo.samples.jws. Select Finish.
    !!
  3. Right click on the new package and Select New->Interface
  4. Name the interface as Calculator. Select Finish.
    !!
  5. Add the following code to the Calculator interface class
    Code Block
    titleCalculator.class
    borderStylesolid
    
    package org.apache.geronimo.samples.jws;
    import javax.jws.WebMethod;
    import javax.jws.WebParam;
    import javax.jws.WebResult;
    import javax.jws.WebService;
    import javax.xml.ws.RequestWrapper;
    import javax.xml.ws.ResponseWrapper;
    @WebService(name="CalculatorPortType", portName="CalculatorPort",
    targetNamespace = "http://jws.samples.geronimo.apache.org")
    public interface Calculator {
    /**
    * @param value1
    * @param value2
    * @return
    * returns int
    * */
    @WebMethod(operationName = "add")
    @WebResult(name = "return", targetNamespace =
    "http://jws.samples.geronimo.apache.org")
    @RequestWrapper(localName = "add", targetNamespace =
    "http://jws.samples.geronimo.apache.org", className =
    "org.apache.geronimo.samples.jws.Add")
    @ResponseWrapper(localName = "addResponse", targetNamespace =
    "http://jws.samples.geronimo.apache.org", className =
    "org.apache.geronimo.samples.jws.AddResponse")
    public int add(@WebParam(name = "value1", targetNamespace =
    "http://jws.samples.geronimo.apache.org") int value1,
    @WebParam(name = "value2", targetNamespace =
    "http://jws.samples.geronimo.apache.org") int value2);
    }
    
    Warning
    titleWarning

    add explanation for the code

  1. Right click on the package org.apache.geronimo.samples.jws and select
    New->Class.
  2. Name the class CalculatorService
  3. Accept all the defaults and click Finish.
    !!
  4. Add the following code to CalculatorService.class
    Code Block
    titleCalculatorService.class
    borderStylesolid
    
    package org.apache.geronimo.samples.jws;
    import javax.annotation.Resource;
    import javax.jws.WebService;
    import javax.xml.ws.WebServiceContext;
    @WebService(serviceName = "Calculator",
    portName="CalculatorPort",
    endpointInterface = "org.apache.geronimo.samples.jws.Calculator",
    targetNamespace = "http://jws.samples.geronimo.apache.org")
    public class CalculatorService implements Calculator {
    @Resource
    private WebServiceContext context;
    /**
    * @return
    * returns javax.xml.ws.WebServiceContext
    */
    public WebServiceContext getContext() {
    return context;
    }
    /**
    * @param value1
    * @param value2
    * @return
    * returns int
    */
    public int add(int value1, int value2) {
    System.out.println("User Principal: " + context.getUserPrincipal());
    System.out.println("value1: " + value1 + " value2: " + value2);
    return value1 + value2;
    }
    }