博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebService概述和CXF入门小程序
阅读量:6420 次
发布时间:2019-06-23

本文共 2871 字,大约阅读时间需要 9 分钟。

一. 什么是WedService?

WebService不是框架, 甚至不是一种技术, 而是一种跨平台,跨语言的规范, WebService的出现是为了解决这种需求场景: 不同平台, 不同语言所编写的应用之间相互调用.

二. WedService有什么用?

WebService能够集中解决下面问题:

1. 远程调用

2. 跨平台调用

3. 跨系统调用

那么WebService在企业中有什么用呢?

1. 同一个公司新旧系统的整合.

2. 不同公司的业务整合: 业务的整合就要带来不同公司的系统整合, 而不同公司的系统可能存在平台不同, 语言不同的问题.
3. 内容聚合: 一个应用须要提供天气预报, 股票行情,黄金行情等, 内容聚合的应用须要调用大量不同平台, 不同语言编写的应用的方法.

三. 面向服务架构(SOA)

1. 什么是面向服务架构: service1, service2, service3 - 全部组件都是"即插即用"的.

   IBM提倡的SOA架构: 希望以"组装电脑"的方式来开发软件
   ① 各种提供服务的组件
   ② 企业服务总线(Enterpise Service Bus - ESB)
2. CXF号称是SOA框架

四. WebService三大技术基础

1. WSDL: web service definition language - web service定义语言

   - 通俗地说, WSDL文档描写叙述了Web Service例如以下三个方面:

   - WHAT: 该Web Service 包括什么操作
   - HOW: 该Web Service的操纵应该如何调用
   - WHERE: 该Web Service的服务地址

2. SOAP: Simple Object Access Protocol: 简单对象訪问协议

    一次web service的调用, 事实上并非方法调用, 而是发送SOAP消息(即xml文档片段)

3. UDDI: Universal Description, Discovery and Integration

    UDDI 是一种文件夹服务。企业能够使用它对 Web services 进行注冊和搜索

※ 调用一次Web Service的本质:

1. client把调用方法參数, 转换成XML文档片段(SOAP消息 - input消息) - 该文档片段必须符合WSDL定义的格式
2. 通过网络, 把xml文档片段传给server
3. server接收到xml文档片段
4. server解析XML文档片段, 提取当中的数据, 并把数据转换调用Web Service所须要的參数值
5. server端运行方法
6. 把运行方法得到的返回值, 再次转换为生成为XML文档片段(SOAP消息 - output消息)- 该文档片段必须符合WSDL定义的格式
7. 通过网络, 把xml文档片段传给client
8. client接受到xml文档片段
9. client解析xml文档片段, 提取当中的数据, 并把数据转换调用Web Service的返回值
从上面调用本质来看, 要一个语言支持web service唯一的要求是: 该语言支持xml文档的解析, 生成, 支持网络传输

五. 使用CXF开发WebService程序

1. 环境准备:

① 下载Apache cxf2.2.10环境: 

② 所需Jar包: 

    cxf-2.2.10.jar

    geronimo-servlet_2.5_spec-1.2.jar

    jetty-6.1.21.jar

    jetty-util-6.1.21.jar

    wsdl4j-1.6.2.jar

    XmlSchema-1.4.5.jar

③ 配置path环境变量: G:\Java_lib\apache\cxf\apache-cxf-2.2.10\bin (cxf的解压文件夹)

    命令行输入: wsdl2java查看是否配置成功

2. 开发服务端:

① 开发一个Web Service业务接口, 该接口要用@WebService修饰

@WebServicepublic interface HelloService {	public String sayHello(String name);}

② 开发一个Web Service实现类, 实现类也须要用@WebService修饰

@WebService(endpointInterface="com.zdp.service.HelloService")public class HelloServiceImpl implements HelloService {	@Override	public String sayHello(String name) {		return name + ", 您好!

如今的时间是: " + new Date(); } }

③ 使用Endpoint类的静态方法公布WebService 

public class MyServer {	public static void main(String[] args) {		HelloService helloService = new HelloServiceImpl();		Endpoint.publish("http://localhost/sayHello", helloService);		System.out.println("Web Service 暴露成功");	}}

注: 每一个Web Service组件须要2个部分: 接口和实现类

④ 执行MyServer(CXF内置了一个Jetty Webserver), 在浏览器中输入下面地址:  , 假设WebService暴露成功将会在浏览器里看到一个xml文件

3. 开发client

① 打开命令行, cd进入client的src文件夹, 执行: wsdl2java http://localhost/sayHello?wsdl , 目的就是通过暴露的wsdl生成Java类

② 写一个client測试类:

public class MyClient {	public static void main(String[] args) {		HelloServiceImplService factory = new HelloServiceImplService();		HelloService helloService = factory.getHelloServiceImplPort(); // 返回一个代理		System.out.println(helloService.sayHello("zhangsan"));	}}

③ 代码结构图及下载地址: 

转载于:https://www.cnblogs.com/gavanwanggw/p/6897117.html

你可能感兴趣的文章
POJ3525 Most Distant Point from the Sea
查看>>
Activity与Service通信(不同进程之间)
查看>>
《数据库系统概论》第九章笔记
查看>>
纸牌游戏(队列)
查看>>
[转载]Jmeter那点事·ForEach和If控制器
查看>>
一种解决eclipse中安装maven出错的方法
查看>>
近几年杭电OJ大型比赛题目合集【更新到2017年11月初】
查看>>
SQLServer中日期与字符串之间的互相转换及日期格式
查看>>
hdu4417
查看>>
走近docker——ubuntu server 18.04上初体验
查看>>
jmeter 使用ANT运行 设置自动停止时间
查看>>
Django框架----在Python脚本中调用Django环境
查看>>
爬虫----selenium模块
查看>>
数组的基本知识点
查看>>
web前端----Bootstrap框架
查看>>
Oracle-01:基础命令小结
查看>>
创建用户配置文件
查看>>
New Concept English Two 31 85
查看>>
New Concept English three (29)
查看>>
2014年发生的一些事情
查看>>