一、Web Service基本概念

Web Service也叫XML Web Service. WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。

Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他可以通过SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。

WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。

UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。


二、调用方式

1.wsimport命令行生成:wsimport工具是java jdk提供的工具。cmd进入,输入如下命令:


wsimport -d D:\test -keep -verbose  http://127.0.0.1:8080/hello?wsdl



-d 表示输出的目录,目录必须事先存在,否则导出失败。

-keep 表示导出webservice的class文件时是否也导出源代码java文件

-verbose verbose表示详细信息

注:也可以利用Eclipse,新建Web Service Client项目,输入已有的wsdl地址,并自己指定包名,生成客户端的生成,调用webservice服务

2.HttpClient:可以用来调用webservie服务,也可以抓取网页数据

三、WebService实例(使用CXF工具包)

引入CXF工具包到项目中(这边我使用的是Apache-CXF-3.1.6),可以到 官网 自行下载

1.WebService服务端:

①接口类:在类上注解WebService

import javax.jws.WebService;

@WebService
public interface HelloWorld {
	 String sayHi(String name);
}




②实现类:


import java.util.Date;

import javax.jws.WebService;

import com.ywx.HelloWorld;

@WebService(endpointInterface="com.ywx.HelloWorld",serviceName="HelloWorldWs")//指定webservice所实现的接口以及服务名称
public class HellowWorlds implements HelloWorld{
	@Override  
    public String sayHi(String name) {  
        return name+"您好!现在时间是:"+new Date();  
    } 
}


③Web Service暴露WSDL地址函数(发布Web Service):



import javax.xml.ws.Endpoint;

import com.ywx.HelloWorld;
import com.ywx.impl.HellowWorlds;

public class ServiceMain {
	public static void main(String args[]){  
        HelloWorld hw = new HellowWorlds();  
        //调用Endpoint的publish方法发布Web Service  
        Endpoint.publish("http://192.168.1.105/wstest", hw);  
        System.out.println("Web Service暴露成功!");  
    } 
}

写完3个类后,运行main方法,通过publish方法发布Web Service,在浏览器输入http://192.168.1.105/wstest?wsdl显示如下,则发布成功(注意这边测试的时候IP对应的是本机的IP):

cxf示例 java java cxf webservice_Soap

2.WebService客户端:

①新建 Web Service Client 项目

cxf示例 java java cxf webservice_cxf_02

cxf示例 java java cxf webservice_Soap_03

然后点击next直至Finish,生成Web Service Client 客户端,自动生成如下几个文件:

cxf示例 java java cxf webservice_cxf_04



②写一个测试类,调用WebService接口方法:


public class TestServiceClient {
	public static void main(String[] args) {
			HelloWorldWs service = new HelloWorldWs();
			HelloWorld hw = service.getHellowWorldsPort();
			//hw.sayHi("wuyijun");
			System.out.println(hw.sayHi("wuyijun"));
	}
}

控制台显示调用成功:

cxf示例 java java cxf webservice_Soap_05


到这为止,Web Service实例已经测试成功,下一节将会对CXF和Spring进行整合,通过配置文件,把Web Service服务放到Tomcat服务器上,并用另一个项目进行调用。。。