Calculator.java
package org.apache.geronimo.samples.jws; import javax.jws.WebService; import javax.jws.WebMethod; import javax.jws.WebParam; @WebService public interface Calculator { @WebMethod public int add(@WebParam(name = "value1") int value1, @WebParam(name = "value2") int value2); }
CalculatorService.java
package org.apache.geronimo.samples.jws; import javax.annotation.Resource; import javax.jws.WebService; import javax.xml.ws.WebServiceContext; @WebService(endpointInterface = "org.apache.geronimo.samples.jws.Calculator") public class CalculatorService implements Calculator { @Resource private WebServiceContext context; public int add(int value1, int value2) { System.out.println("User Principal: " + context.getUserPrincipal()); return value1 + value2; } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:calc="urn:geronimo-samples-jws" xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"> <servlet> <display-name>CalculatorService</display-name> <servlet-name>CalculatorService</servlet-name> <servlet-class> org.apache.geronimo.samples.jws.CalculatorService </servlet-class> </servlet> <servlet-mapping> <servlet-name>CalculatorService</servlet-name> <url-pattern>/calculator</url-pattern> </servlet-mapping> </web-app>
geronimo-web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://geronimo.apache.org/xml/ns/j2ee/web-1.1"> <dep:environment xmlns:dep="http://geronimo.apache.org/xml/ns/deployment-1.1"> <dep:moduleId> <dep:groupId>org.apache.geronimo.samples.jws</dep:groupId> <dep:artifactId>Calculator</dep:artifactId> <dep:version>1.0</dep:version> <dep:type>car</dep:type> </dep:moduleId> </web-app>
webservices.xml
<?xml version="1.0" encoding="UTF-8"?> <webservices xmlns="xmlns="http://java.sun.com/xml/ns/javaee" version="1.2"> <webservice-description> <webservice-description-name>CalculatorService</webservice-description-name> <wsdl-file>CalculatorService.wsdl</wsdl-file> <port-component> <port-component-name>CalculatorServicePort</port-component-name> <wsdl-port>CalculatorPort</wsdl-port> <service-endpoint-interface> org.apache.geronimo.samples.jws.Calculator </service-endpoint-interface> <service-impl-bean> <servlet-link>CalculatorService</servlet-link> </service-impl-bean> </port-component> </webservice-description> </webservices>
CalculatorClient.java
package org.apache.geronimo.samples.jws.client; import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import org.apache.geronimo.samples.jws.Calculator; public class CalculatorClient { public static void main(String[] args) throws Exception { int value1 = Integer.parseInt(args[0]); int value2 = Integer.parseInt(args[1]); System.out.println(add(value1, value2)); } public static int add(int value1, int value2) throws Exception { URL url = new URL("http://localhost:8080/jaxws-calculator-1.0/CalculatorService.wsdl"); QName qname = new QName("http://jws.samples.geronimo.apache.org", "Calculator"); Service service = Service.create(url, qname); Calculator calc = (Calculator)service.getPort(Calculator.class); return calc.add(value1, value2); } }