您的位置:首页 > 编程语言 > Java开发

java利用CXF实现WebService 实例

2017-06-05 17:32 337 查看

一、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):



2.WebService客户端:

①新建 Web Service Client 项目





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



②写一个测试类,调用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"));
}
}控制台显示调用成功:



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

4000
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  cxf java WebService Soap