什么是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下载地址
