WebService经典学习教程.ppt

上传人:飞****9 文档编号:135748757 上传时间:2020-06-18 格式:PPT 页数:50 大小:719KB
返回 下载 相关 举报
WebService经典学习教程.ppt_第1页
第1页 / 共50页
WebService经典学习教程.ppt_第2页
第2页 / 共50页
WebService经典学习教程.ppt_第3页
第3页 / 共50页
WebService经典学习教程.ppt_第4页
第4页 / 共50页
WebService经典学习教程.ppt_第5页
第5页 / 共50页
点击查看更多>>
资源描述

《WebService经典学习教程.ppt》由会员分享,可在线阅读,更多相关《WebService经典学习教程.ppt(50页珍藏版)》请在金锄头文库上搜索。

1、WebService 解决几个问题 什么是WebService 它能做什么 为什么要学习WebService 学习WebService要达到什么目的 简单的网络应用 复杂的网络应用 Java应用程序 View Control 对外公布服务层 DAO Model DB 手机终端 穿戴设备 C NET应用 更为复杂的应用除了自己内部调用之外有可能还会对外部程序提供服务 更或是调用其他应用 C 应用 PHP应用 先理解什么是服务 现在的应用程序变得越来越复杂 甚至只靠单一的应用程序无法完成全部的工作 更别说只使用一种语言了 大家在写应用程序查询数据库时 并没有考虑过为什么可以将查询结果返回给上层的应

2、用程序 甚至认为 这就是数据库应该做的 其实不然 这是数据库通过TCP IP协议与另一个应用程序进行交流的结果 而上层是什么样的应用程序 是用什么语言 数据库本身并不知道 它只知道接收到了一份协议 这就是SQL92查询标准协议 目前的云计算 云查杀都是一种服务 现在比较流行的说法是SOA 面向服务的框架 既然数据库可以依据某些标准对外部其他应用程序提供服务 而且不关心对方使用什么语言 那我们为什么就不能实现跨平台 跨语言的服务呢 只要我们用Java写的代码 可以被任意的语言所调用 我们就实现了跨平台 跨语言的服务 对几个问题的回答 WebService 顾名思义就是基于Web的服务 它使用We

3、b HTTP 方式 接收和响应外部系统的某种请求 从而实现远程调用 我们可以调用互联网上查询天气信息Web服务 然后将它嵌入到我们的程序 C S或B S程序 当中来 当用户从我们的网点看到天气信息时 他会认为我们为他提供了很多的信息服务 但其实我们什么也没有做 只是简单调用了一下服务器上的一段代码而已 学习WebService可以将你的服务 一段代码 发布到互联网上让别人去调用 也可以调用别人机器上发布的WebService 就像使用自己的代码一样 在开始之前必须要让先了解几个名词 名词1 XML ExtensibleMarkupLanguage 扩展性标记语言XML 用于传输格式化的数据 是

4、Web服务的基础 namespace 命名空间 xmlns 使用默认命名空间 xmlns itcast 使用指定名称的命名空间 名词2 WSDL WebServiceDescriptionLanguage Web服务描述语言 通过XML形式说明服务在什么地方 地址 通过XML形式说明服务提供什么样的方法 如何调用 名词3 SOAP SimpleObjectAccessProtocol 简单对象访问协议 SOAP作为一个基于XML语言的协议用于有网上传输数据 SOAP 在HTTP的基础上 XML数据 SOAP是基于HTTP的 SOAP的组成如下 Envelope 必须的部分 以XML的根元素出现

5、 Headers 可选的 Body 必须的 在body部分 包含要执行的服务器的方法 和发送到服务器的数据 以下简单了解一个WSDL SOAP的格式 WSDL 说明服务在哪里 如何调用 其实就是一个使用说明书 1 WS的地址 2 WS的名称 3 ws所提供的方法 即服务 SOAP协议的范本 请求示例 以下发出HTTP请求 但不同的是向服务器发送的是XML数据 2 XML部分即SOAP协议 必须包含Envelope元素和Body元素 1 因为是在HTTP上发数据 所以必须先遵循HTTP协议 SOAP协议 响应示例 响应的信息 同发送信息一样 先必须是HTTP协议 然后再遵循SOAP协议 在Jav

6、a项目中发布第一个WS服务 那么如何才可以发布一个WebService呢 在JDK1 6中JAX WS规范定义了如何发布一个webService服务 JAX WS是指JavaApiforXML WebService 用Jdk1 6 0 21以后的版本发布一个WebService服务 与Web服务相关的类 都位于javax jws 包中 主要类有 WebService 它是一个注解 用在类上指定将此类发布成一个ws Endpoint 此类为端点服务类 它的方法publish用于将一个已经添加了 WebService注解对象绑定到一个地址的端口上 如何发布一个web服务 在类上添加 WebServ

7、ice注解 这是jdk1 6提供的一个注解 它位于 javax jws 包中 通过EndPoint 端点服务 发布一个webService Endpoint也是jdk提供的一个专门用于发布服务的类 它的publish方法接收两个参数 一个是本地的服务地址 二是提供服务的类 它位于javax xml ws 包中 staticEndpoint publish Stringaddress Objectimplementor 在给定地址处针对指定的实现者对象创建并发布端点 stop方法用于停止服务 EndPoint发布完成服务以后 将会独立的线程运行 所以 publish之后的代码 可以正常执行 其他

8、注意事项 给类添加上 WebService注解后 类中所有的非静态方法都将会对外公布 不支持静态方法 final方法 如果希望某个方法 非static 非final 不对外公开 可以在方法上添加 WebMethod exclude true 阻止对外公开 如果一个类上 被添加了 WebService注解 则必须此类至少有一个可以公开的方法 否则将会启动失败 第一个WebService服务 1 添加注解 WebServicepublicclassOneService 2 至少包含一个可以对外公开的服务publicStringsayHello Stringname System err print

9、ln invoke name return Hello name publicstaticvoidmain String args 3 第一个参数称为Binding即绑定地址 第二个参数是实现者 即谁提供服务Endpoint publish http localhost 9999 one newOneService 1 给类添加注解 2 声明实例方法 3 使用端点服务 将对象绑定到一个地址和端口 同时必须要在端口后面给服务取一个名称 4 在IE地址栏输入以下地址访问 http localhost 9999 one wsdl 服务发布成功了 如何调用呢 请看说明书 WSDL 在地址栏输入 注意后

10、面的参数 wsdl http 127 0 0 1 9999 helloworld wsdl目前不是访问webService 只是获取一个用于描述WebService的说明文件 即 wsdl文件 wsdl WebServiceDescriptionLanguage 是以XML文件形式来描述WebService的 说明书 有了说明书 我们才可以知道如何使用或是调用这个服务 使用wsimport生成本地调用代码 说明书看不懂怎么办 别急JDK能看懂 wsimport是jdk自带的 可以根据wsdl文档生成客户端调用代码的工具 当然 无论服务器端的WebService是用什么语言写的 都将在客户端生成

11、Java代码 服务器端用什么写的并不重要 wsimport exe位于JAVA HOME bin目录下 常用参数为 d 将生成 class文件 默认参数 s 将生成 java文件 p 将生成的类 放于指定的包下 wsdlurl http server port service wsdl 必须的参数 示例 C wsimport s http 192 168 0 100 one wsdl注意 s不能分开 s后面有个小点 用于指定源代码生成的目录 点即当前目录 如果使用了 s参数则会在目录下生成两份代码 一份为 class代码 一份为 java代码 class代码 可以经过打包以后使用 java代码

12、可以直接Copy到我们的项目中运行 生成以后代码如下图所示 生成两份代码 只拷贝Java代码 还必须要对照WSDL文件找到应该如何调用 看懂使用说明书WSDL 上面箭头所指的就是应该调用的类及方法 通过wsimport生成本地代码 调用网络上的web服务 比如手机号码归属地服务 WebService通过HTTP协议完成远程调用 深入分析 RPC WebService只采用HTTPPOST方式传输数据 不使用GET方式 握手 WSDL get 普通httppost的contentType为application x www form urlencodedWebService的contentTyp

13、e为 即在Http的基础上发SOAP协议text xml这是基于soap1 1协议 application soap xml这是基于soap1 2协议 WebService从数据传输格式上作了限定 WebService所使用的数据均是基于XML格式的 目前标准的WebService在数据格式上主要采用SOAP协议 SOAP协议实际上就是一种基于XML编码规范的文本协议 SOAP SimpleObjectAccessprotocol简单对像访问协议 是运行在HTTP协议基础之上的协议 其实就是在HTTP协议是传输XML文件 就变成了SOAP协议 SOAP1 1和SOAP1 2的namespace

14、不一样 可以通过查看类javax xml ws soap SOAPBinding来查看里面的常量默认情况下 Jdk1 6只支持soap1 1即 BindingType value javax xml ws soap SOAPBinding SOAP11HTTP BINDING WebService和Web服务器的区别 WebService和Web服务器有什么区别呢 我们可以把WebService看作是Web服务器上应用 反过来说 Web服务器是WebService运行时所必需的容器 这就是它们的区别和联系 使用JDK1 6发布的简单Web服务 其内部其实是使用Socket实现 可以查看 SUN

15、公司未对外公布的API类com sun xml internal ws transport http server ServerMgr获知 请使用反编译工具 WebService的特点WebService通过HTTPPOST方式接受客户的请求WebService与客户端之间一般使用SOAP协议传输XML数据 它本身就是为了跨平台或跨语言而设计的 客户端调用WebService的方式 通过wsimport生成客户端代码通过客户端编程的方式调用通过ajax调用SOAP 使用原生的ajax调用web服务 由于使用ajax js调用web服务完成不同于使用java代码调用 所以 必须要对SOAP文件非

16、常的了解 一般使用ajax调用 应该是在已经获知了以下信息以后才去调用 获知请求 request 的soap文本 获知响应 response 的soap文本 请求文件和响应文本格式 一般会随web服务的发布一同发布 我们可以通过WSExplorer获取上面两段文本 Ajax调用获取所有用户 客户端通过编程的方式访问服务 使用javax xml ws Service类用于访问web服务 关键类Service方法create 用户创建Service对像 提供wsdlurl和服务名 getPort 用于通过指定namespace portName和接口的范型 在客户端需要一个与服务器接口完全相同的类 仍然使用工具生成 但只需要一个接口 并需要简单修改 如果返回的是复杂数据类型如POJO 还需要将POJO一并放到项目中 不要试图通过 p来修改包名 会出错的 关键类QName 被称为完全限定名即 QualifiedName的缩写 QName的值包含名称空间URI 本地部分和前缀 客户端编程 用的不是很多 WebService监听工具 之前我们使用过HttpWatch获取的HTTP的调用过程 并获

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号