编写服务接口:
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService
public interface HelloWorld {
@WebMethod
public @WebResult(name = "result")
String sayHello(@WebParam(name = "name") String name);
}
编写实现类:
import javax.jws.WebService;
@WebService
public class HelloWorldImpl implements HelloWorld {
@Override
public String sayHello(String name) {
System.out.println("call me");
return "hello " + name;
}
}
CXF内部集成了Jetty,因此可以直接发布webservice,在浏览器中输入http://localhost:9999/helloworld?wsdl查看发布状态:
import org.apache.cxf.endpoint.Server;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean;
public class CXFServer {
public static void main(String[] args) {
JaxWsServerFactoryBean serverFactoryBean = new JaxWsServerFactoryBean();
serverFactoryBean.setServiceClass(HelloWorldImpl.class);
serverFactoryBean.setAddress("http://localhost:9999/helloworld");
Server server = serverFactoryBean.create();
server.start();
}
}
使用客户端调用服务:
import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
public class CXFClient {
public static void main(String[] args) {
JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();
factoryBean.setAddress("http://localhost:9999/helloworld");
factoryBean.setServiceClass(HelloWorld.class);
HelloWorld helloWorld = (HelloWorld) factoryBean.create();
System.out.println(helloWorld.sayHello("jack"));
}
}