<dependency>
<groupId>org.codehaus.xfire</groupId>
<artifactId>xfire-all</artifactId>
<version>1.2.6</version>
</dependency>
public interface CalculatorService {
@WebMethod
int add(@WebParam(name = "num1") int num1, @WebParam(name = "num2") int num2);
}
public class CalculatorServiceImpl implements CalculatorService {
public int add(int num1, int num2) {
return num1 + num2;
}
}
public class CalculatorServicePublisher {
public static void main(String[] args) {
CalculatorService calculatorService = new CalculatorServiceImpl();
XFire xfire = new XFireFactory().getXFire();
Service serviceModel = new AbstractServiceFactory().create(CalculatorService.class);
serviceModel.addOperation(new AbstractOperation(serviceModel, "add") {
@Override
public Object invoke(Message message) {
Object[] parameters = message.getBody();
int num1 = (Integer) parameters[0];
int num2 = (Integer) parameters[1];
int result = calculatorService.add(num1, num2);
return new Object[]{result};
}
});
Endpoint endpoint = new SimpleEndpoint(new URL("http://localhost:8080/CalculatorService"), serviceModel);
xfire.getTransportManager().register(endpoint);
xfire.start();
}
}