WebService严格的说,是一种跨平台,跨语言的规范,用于不同平台,不同语言开发的应用之间的交互。
例如:windows Server服务器上有个C#开发的应用A,在Linux上有一个java开发的应用B,而B要调用A应用,或者时互相调用,用于查看对方的业务数据。
开发人员只是在具体的开发Webservice接口,以及调用WebService接口,例如java就有ApacheCXF等等。
测试HelloWorld(使用JDK自带的)
创建Maven工程,jar包,名称WS_Server
|
创建HelloWorld.java接口
import javax.jws.WebService;
@WebService public interface HelloWorld {
public String say(String str); }
|
创建HelloWorldImpl.java实现类
import javax.jws.WebService;
import com.kingsoft.webservice.HelloWorld;
@WebService public class HelloWorldImpl implements HelloWorld{
@Override public String say(String str) { return "hello"+str; }
} |
创建服务器Server.java(在DOS环境下ipconfig查出本机的ip地址)
package com.kingsoft.webservice.impl;
import javax.xml.ws.Endpoint; import com.kingsoft.webservice.HelloWorld;
public class Server {
public static void main(String[] args) { System.out.println("web service start"); HelloWorld implementor = new HelloWorldImpl(); String address= "http://192.168.0.101/helloWorld"; Endpoint.publish(address, implementor); //JDK实现,暴露webservice接口 System.out.println("web service started"); } } |
启动后在浏览器地址栏输入http://192.168.0.101/helloWorld?wsdl
|
接下来我们使用CXF提供的Service
修改pom.xml
<dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.3.3</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-core</artifactId> <version>3.3.3</version> </dependency> <!-- 服务器jetty --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http-jetty</artifactId> <version>3.3.3</version> </dependency> </dependencies> |
修改Server.java服务器
package com.kingsoft.webservice.impl;
import org.apache.cxf.jaxws.JaxWsServerFactoryBean; import com.kingsoft.webservice.HelloWorld;
public class Server {
public static void main(String[] args) { System.out.println("web service start"); HelloWorld implementor = new HelloWorldImpl(); String address= "http://192.168.0.101/helloWorld"; JaxWsServerFactoryBean factoryBean = new JaxWsServerFactoryBean(); factoryBean.setAddress(address); //设置暴露的地址 factoryBean.setServiceClass(HelloWorld.class); //接口类 factoryBean.setServiceBean(implementor); //实现类 factoryBean.create(); //创建webservice接口 System.out.println("web service started"); } } |
启动后在浏览器地址栏输入http://192.168.0.101/helloWorld?wsdl
|
WebService客户端
下载服务器端地址的转换工具http://cxf.apache.org/download.html
将zip包解压到C盘下,配置path环境变量指向bin文件夹下 C:\service\apache-cxf-3.3.3\bin; |
创建maven工程,jar包,名称WS_Client
在文件夹上单击右键,选择Properties 复制这段路径,等待粘贴 |
进入DOS状态后定位到复制路径的位置
D:\workspace3.9.4\WS_Client\src\main\java>wadl2java http://192.168.0.101/helloWorld?wsdl
这步操作时必须要保证服务端是启动的状态
解析后就会在src/main/java下生成对应的包和类,在工程上右键,刷新即可出现
|
在com.kingsoft.webservice中创建Client.java客户端
public class Client {
public static void main(String[] args) { HelloWorldService service = new HelloWorldService(); HelloWorld helloWorld = service.getHelloWorldPort(); System.out.println(helloWorld.say("疯语者")); } } |
测试结果
调用了服务器端的方法 |