JavaWeb Service开发简介.ppt_第1页
JavaWeb Service开发简介.ppt_第2页
JavaWeb Service开发简介.ppt_第3页
JavaWeb Service开发简介.ppt_第4页
JavaWeb Service开发简介.ppt_第5页
已阅读5页,还剩22页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JavaWebService开发系列之基础篇 南京研发四部 胡来喜 Confidential 2009iSoftStoneCorporation AllRightsReserved 2 目录 Confidential 2009iSoftStoneCorporation AllRightsReserved 3 WebService简介 WebService是什么 实际上 WebService的主要目标是跨平台的可互操作性 Confidential 2009iSoftStoneCorporation AllRightsReserved 4 补充说明 1 访问一个WebService实际上可以看作调用一个函数 唯一不同的就是这个函数是远程的 这么一说 它和RMI就没有什么本质的区别了 既然是一个函数 当然要有函数的声明了 完成这个工作的就是WSDL 它详细的定义函数的原型 包括函数名 入口参数 出口参数 这就是WSDL中opertion完成的工作 既然是一个远程的函数 还要涉及与远程地址的一个绑定 这是WSDL中service的任务 Confidential 2009iSoftStoneCorporation AllRightsReserved 5 2 既然是远程访问 就一定要有一个访问协议 WebService的访问协议就是SOAP SOAP建立在XML之上 不同的就是对XML原本没有限制的格式加上了一些限制 需要有envelope 在envelope中 还要分header和body 如果利用SOAP开发WebService的程序 那就需要根据WSDL的定义来自行组装SOAP包 这显然要比利用WSDL直接面向WebService开发要复杂一些 JAXM是一个利用SOAP进行通信的开发包 它简化了SOAP消息的打包过程 Confidential 2009iSoftStoneCorporation AllRightsReserved 6 3 SOAP是建立在XML之上的 那么显然XML的开发包同样适合于SOAP 在这个层次上开发WebService 除了要完成上一层的工作外 还要自行按照SOAP的格式组装SOAP消息 这显然又增加了工作量 XML的开发工具就比较多了 从最简单的SAX和DOM到DOM4J JDOM 还有不少XML到对象绑定的工具 如JAXB Castor等等 其实 不考虑WebService 完全用XML做通信协议的情况也并不少见 知晓XML RPC的存在 就不难理解XML做通信的含义了 截至到这里所讨论的内容 Sun提供了WSDP JavaWebServiceDeveloperPack 其中包含从XML解析到WSDL生成的全套解决方案 Confidential 2009iSoftStoneCorporation AllRightsReserved 7 4 上面讨论的所有东西实际上都还停留在传递消息的内容上 并未涉及通信的过程 不要一看到WebService的Web就想当然认为它只能通过HTTP来传输 前面的讨论可以看出 所有的消息内容与传输并无直接关系 所以 无论是以HTTP传输 还是SMTP或是自定义的协议都没有问题 在这个层次上开发WebService 前面的种种险阻之外 还要完成对XML的手工解析工作 这里还是以最常见的HTTP方式来讨论 HTTP的开发就将Server和Client区别对待 Server的实现通常的选择是Servlet 让WebServer替我们完成HTTP协议的解析可以省去我们很多的作 Client的实现可以选择JDK自带的HttpClient Apache的Jakarta项目下的Commons子项目也提供了一个HttpClient Confidential 2009iSoftStoneCorporation AllRightsReserved 8 5 无论是HTTP还是SMTP 抑或是自定义协议 归根结底都是应用级的协议 底层的实现都是由Socket完成 到了这个层次基本就是原始时代了 什么都没有 一切都要手工完成 在这个层次上开发WebService 所有前面的困难都要一一经历 此外 还有协议的开发等待着不幸至此的人们 到了这里 也不需要其它的工具了 JDK自带的Socket可以保打天下 Confidential 2009iSoftStoneCorporation AllRightsReserved 9 6 还想往下吗 再往下就是操作系统的实现了 Java的平台无关就失去了意义 也超出了我目前所了解的范围 到此打住吧 前面所提及应该算是WebService的一个基本知识结构 这里并没有讨论UDDI等等的内容 一来我对它并不了解 二来那应该属于应用 不应该算WebService实现中 经过前面的讨论 我们可以看出 WebService并没有什么神秘可言 所有的东西都是建立在已有东西的基础之上 技术的发展不会是无中生有 只会是一个更好的解决方案而已 在追新求变之前 一个比较牢固的基础才是最重要 Confidential 2009iSoftStoneCorporation AllRightsReserved 10 WebService简介 关键的技术和规则 Confidential 2009iSoftStoneCorporation AllRightsReserved 11 WebService简介 WebService有什么优缺点 Confidential 2009iSoftStoneCorporation AllRightsReserved 12 SOAP 简单对象传输协议 语法规则SOAP消息必须用XML来编码SOAP消息必须使用SOAPEnvelope命名空间SOAP消息必须使用SOAPEncoding命名空间SOAP消息不能包含DTD引用SOAP消息不能包含XML处理指令 SOAP语法 消息的基本结构 Confidential 2009iSoftStoneCorporation AllRightsReserved 13 SOAP元素 必需的SOAP消息的根元素命名空间必须为 xmlns soap http www w3 org 2001 12 soap envelope encodingStyle属性 可选的如果有则必须是Envelope元素的第一个子元素actor属性mustUnderstand属性encodingStyle属性 ClicktoaddTextClicktoaddTextClicktoaddText SOAPEnvelope SOAPHeader SOAPBody SOAPFault 必须的传输的是实际SOAP消息 可选的如果有则必须是Body元素的子元素只能出现一次 Confidential 2009iSoftStoneCorporation AllRightsReserved 14 SOAPEnvelope元素 SOAPEnvelope元素必需的SOAP的Envelope元素是SOAP消息的根元素 它可把XML文档定义为SOAP消息 请注意xmlns soap命名空间的使用 它的值应当始终是 http www w3 org 2001 12 soap envelope并且它可把封装定义为SOAP封装 Messageinformationgoeshere xmlns soap命名空间SOAP消息必须拥有与命名空间 http www w3 org 2001 12 soap envelope 相关联的一个Envelope元素 如果使用了不同的命名空间 应用程序会发生错误 并抛弃此消息 encodingStyle属性SOAP的encodingStyle属性用于定义在文档中使用的数据类型 此属性可出现在任何SOAP元素中 并会被应用到元素的内容及元素的所有子元素上 SOAP消息没有默认的编码方式 语法soap encodingStyle URI 实例 Messageinformationgoeshere Confidential 2009iSoftStoneCorporation AllRightsReserved 15 SOAPHeader元素 SOAPHeader可选的SOAPHeader元素可包含有关SOAP消息的应用程序专用信息 比如认证 支付等 如果Header元素被提供 则它必须是Envelope元素的第一个子元素 注释 所有Header元素的直接子元素必须是合格的命名空间 234 上面的例子包含了一个带有一个 Trans 元素的头部 它的值是234 此元素的 mustUnderstand 属性的值是 1 SOAP在默认的命名空间中 http www w3 org 2001 12 soap envelope 定义了三个属性 这三个属性是 actor mustUnderstand以及encodingStyle 这些被定义在SOAP头部的属性可定义容器如何对SOAP消息进行处理 Confidential 2009iSoftStoneCorporation AllRightsReserved 16 SOAPBody元素 强制使用的SOAPBody元素包含实际的SOAP消息 SOAPBody元素必需的SOAPBody元素可包含打算传送到消息最终端点的实际SOAP消息 SOAPBody元素的直接子元素可以是合格的命名空间 SOAP在默认的命名空间中 http www w3 org 2001 12 soap envelope 定义了Body元素内部的一个元素 即SOAP的Fault元素 用于指示错误消息 Apples上面的例子请求苹果的价格 请注意 上面的m GetPrice和Item元素是应用程序专用的元素 它们并不是SOAP标准的一部分 而一个SOAP响应应该类似这样 1 90 Confidential 2009iSoftStoneCorporation AllRightsReserved 17 SOAPFault元素 可选的SOAPFault元素用于存留SOAP消息的错误和状态信息 SOAPFault元素来自SOAP消息的错误消息被携带于Fault元素内部 如果已提供了Fault元素 则它必须是Body元素的子元素 在一条SOAP消息中 Fault元素只能出现一次 SOAP的Fault元素用于下列子元素 SOAPFaultCodes在下面定义的faultcode值必须用于描述故障时的faultcode元素中 Confidential 2009iSoftStoneCorporation AllRightsReserved 18 WSDL WebServicesDescriptionLanguage Confidential 2009iSoftStoneCorporation AllRightsReserved 19 WSDL简介 什么是WSDL WSDL指网络服务描述语言WSDL使用XML编写WSDL是一种XML文档WSDL用于描述网络服务WSDL也可用于定位网络服务WSDL还不是W3C标准WSDL可描述网络服务 WebServices WSDL指网络服务描述语言 WebServicesDescriptionLanguage WSDL是一种使用XML编写的文档 这种文档可描述某个Webservice 它可规定服务的位置 以及此服务提供的操作 或方法 在W3C的WSDL发展史在2001年3月 WSDL1 1被IBM 微软作为一个W3C纪录 W3Cnote 提交到有关XML协议的W3CXML活动 用于描述网络服务 W3C纪录仅供讨论 一项W3C纪录的发布并不代表它已被W3C或W3C团队亦或任何W3C成员认可 在2002年7月 W3C发布了第一个WSDL1 2工作草案 Confidential 2009iSoftStoneCorporation AllRightsReserved 20 WSDL文档 WSDL文档仅仅是一个简单的XML文档 它包含一系列描述某个webservice的定义 WSDL文档结构WSDL文档是利用这些主要的元素来描述某个webservice的 元素定义webservice执行的操作webservice使用的消息webservice使用的数据类型webservice使用的通信协议一个WSDL文档的主要结构是类似这样的 definitionoftypes definitionofamessage definitionofaport definitionofabinding WSDL文档可包含其它的元素 比如extension元素 以及一个service元素 此元素可把若干个webservices的定义组合在一个单一的WSDL文档中 如需完整的语法概述 请访问WSDL语法 Confidential 2009iSoftStoneCorporation AllRightsReserved 21 WSDL文档2 WSDL端口元素是最重要的WSDL元素 它可描述一个webservice 可被执行的操作 以及相关的消息 可以把元素比作传统编程语言中的一个函数库 或一个模块 或一个类 WSDL消息元素定义一个操作的数据元素 每个消息均由一个或多个部件组成 可以把这些部件比作传统编程语言中一个函数调用的参数 WSDLtypes元素定义webservice使用的数据类型 为了最大程度的平台中立性 WSDL使用XMLSchema语法来定义数据类型 WSDLBindings元素为每个端口定义消息格式和协议细节 WSDL实例这是某个WSDL文档的简化的片段 在这个例子中 元素把 glossaryTerms 定义为某个端口的名称 把 getTerm 定义为某个操作的名称 操作 getTerm 拥有一个名为 getTermRequest 的输入消息 以及一个名为 getTermResponse 的输出消息 元素可定义每个消息的部件 以及相关联的数据类型 对比传统的编程 glossaryTerms是一个函数库 而 getTerm 是带有输入参数 getTermRequest 和返回参数getTermResponse的一个函数 Confidential 2009iSoftStoneCorporation AllRightsReserved 22 WSDL端口 WSDL端口可描述由某个webservice提供的界面 合法操作 WSDL端口元素是最重要的WSDL元素 它可描述一个webservice 可被执行的操作 以及相关的消息 端口定义了指向某个webservice的连接点 可以把该元素比作传统编程语言中的一个函数库 或一个模块 或一个类 而把每个操作比作传统编程语言中的一个函数 操作类型请求 响应是最普通的操作类型 不过WSDL定义了四种类型 Confidential 2009iSoftStoneCorporation AllRightsReserved 23 WSDL端口2 One Way操作一个one way操作的例子 在这个例子中 端口 glossaryTerms 定义了一个名为 setTerm 的one way操作 这个 setTerm 操作可接受新术语表项目消息的输入 这些消息使用一条名为 newTermValues 的消息 此消息带有输入参数 term 和 value 不过 没有为这个操作定义任何输出 Request Response操作一个request response操作的例子 在这个例子中 端口 glossaryTerms 定义了一个名为 getTerm 的request response操作 getTerm 操作会请求一个名为 getTermRequest

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论