@WebService public interface ServiceDemo{ public String say(String str); }
@WebService public class ServiceDemoImpl implements ServiceDemo{ public String say(String str) { return "Hello "+str; } }
JDK实现:html
public class Server { public static void main(String[] args) { System.out.println("web service start"); HelloWorld implementor = new ServiceDemoImpl (); String address = "http://192.168.1.103/serviceDemo"; Endpoint.publish(address, implementor); // JDK实现 System.out.println("web service started"); } }
<dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.1.5</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.5</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>3.1.5</version> </dependency>
CXF实现:java
public class Server { public static void main(String[] args) { System.out.println("web service start"); HelloWorld implementor = new ServiceDemoImpl (); String address = "http://192.168.1.103/serviceDemo"; JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); factoryBean.setAddress(address); // 设置暴露地址 factoryBean.setServiceClass(HelloWorld.class); // 接口类 factoryBean.setServiceBean(implementor); // 设置实现类 factoryBean.create(); System.out.println("web service started"); 1} }
bin
目录下有wsdl2java,wsdl2java.bat,要使用wsdl2java命令,须要配置path。打开环境变量配置,将路径:D:\apache-cxf-3.1.5\bin 加入。建立一个maven的JavaSE项目:ws-clientweb
找到ws-client项目的本地路径: apache
在本地路径下按shift加鼠标右键,打开命令窗口,输入:wsdl2java address?wsdl。其中address是指服务端发布的webservice接口浏览器
上一步中须要注意的是:不能把服务器端关闭。服务器
执行完以后,刷新ws-client,客户端的代码就生成了。frontend
关键代码是ServiceDemoService.javamaven
编写客户端主类:Clientcode
public class Client { public static void main(String[] args) { ServiceDemoService service=new ServiceDemoService(); ServiceDemo serviceDemo=service.getServiceDemoPort(); System.out.println(serviceDemo.say("penelope")); } }