什么是webservice? ** webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间交互的规范。 ** 例如:天气预报对外提供接口,供别人调用获取天气的信息。 又比如
什么是webservice?
** webservice是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间交互的规范。 **
例如:天气预报对外提供接口,供别人调用获取天气的信息。 又比如在Windows server上面开发了一个C#应用A,在linux服务器上面又用java开发了一个应用B,两个应用直接互相调用,获取对方的业务数据。
使用CXF实现客户端和服务器交互的HelloWorld程序。
客户端代码
package com.xukaiqiang.webservice.test; import com.xukaiqiang.webservice.HelloWorld; import com.xukaiqiang.webservice.HelloWorldService; public class Client { public static void main(String[] args) { HelloWorldService service=new HelloWorldService(); HelloWorld helloWorld=service.getHelloWorldPort(); System.out.println(helloWorld.say("_xukaiqiang")); } }
服务器端代码
package com.xukaiqiang.webservice.impl; import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import com.xukaiqiang.webservice.HelloWorld; /** * @ClassName: Server * @Description: CXF发布webservice接口 * @author xukaiqiang * @date 2016年12月16日 下午6:21:35 * @modifier * @modify-date 2016年12月16日 下午6:21:35 * @version 1.0 */ public class Server { public static void main(String[] args) { System.out.println("web service start."); HelloWorld helloWorldImpl=new HelloWorldImpl(); String address="http://192.168.2.169/helloWorld"; JaxWsServerFactoryBean factoryBean =new JaxWsServerFactoryBean(); //设置暴露地址 factoryBean.setAddress(address); //接口类 factoryBean.setServiceClass(HelloWorld.class); factoryBean.setServiceBean(helloWorldImpl); //创建webservice接口 factoryBean.create(); System.out.println("web service started"); } }
server依赖
<dependencies> <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-core --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.1.6</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-transports-http-jetty --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>3.1.6</version> </dependency> </dependencies>
接口和接口实现类
package com.xukaiqiang.webservice.impl; import javax.jws.WebService; import com.xukaiqiang.webservice.HelloWorld; @WebService public class HelloWorldImpl implements HelloWorld { public String say(String words) { return "Hello"+words; } }
客户端的代码需要使用wsdl2java命令进行生成:
首先运行server端程序。 然后再要生成代码的目录下面如:client项目的
C:\Users\xukaiqiang\git\webservice\WS_Client\src\main\java文件,
在此处执行命令
wsdl2java http://192.168.2.169/helloWorld?wsdl
就会生成源码到该目录下面。
源码github下载地址