package com.example.calculator;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
@WebService
public interface Calculator {
@WebMethod
int add(@WebParam(name = "a") int a, @WebParam(name = "b") int b);
@WebMethod
int subtract(@WebParam(name = "a") int a, @WebParam(name = "b") int b);
@WebMethod
int multiply(@WebParam(name = "a") int a, @WebParam(name = "b") int b);
@WebMethod
int divide(@WebParam(name = "a") int a, @WebParam(name = "b") int b);
}
package com.example.calculator;
import javax.jws.WebService;
@WebService(endpointInterface = "com.example.calculator.Calculator")
public class CalculatorImpl implements Calculator {
public int add(int a, int b) {
return a + b;
}
public int subtract(int a, int b) {
return a - b;
}
public int multiply(int a, int b) {
return a * b;
}
public int divide(int a, int b) {
return a / b;
}
}
<web-app>
<servlet>
<servlet-name>CalculatorService</servlet-name>
<servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>CalculatorService</servlet-name>
<url-pattern>/calculator</url-pattern>
</servlet-mapping>
</web-app>
package com.example.calculator;
import javax.xml.ws.Endpoint;
public class CalculatorServicePublisher {
public static void main(String[] args) {
String url = "http://localhost:8080/calculator";
Calculator calculator = new CalculatorImpl();
Endpoint.publish(url, calculator);
System.out.println("SOAP service is running at " + url);
}
}