Web服务支持平台.ppt_第1页
Web服务支持平台.ppt_第2页
Web服务支持平台.ppt_第3页
Web服务支持平台.ppt_第4页
Web服务支持平台.ppt_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

第七讲web服务支持平台 内容 一 web服务简介二 soap三 wsdl四 支持web服务的j2ee应用 一 web服务简介 web服务 webservice 是基于xml和http的一种服务其通信协议主要基于soap服务的描述通过wsdl发现和获得服务通过uddi soap simpleobjectaccessprotocol xml based text 协议支持远程通信平台中立wsdl webservicesdefinitionlanguage 接口描述uddi universaldescription discovery andintegration 用于webservices注册用于发现webservices 客户 服务请求者 服务提供者 注册 请求 应答 查找 基本结构 服务信息注册库 提供了软件模块之间一种松耦合的交互方式根据需求通过网络对松散耦合的粗粒度应用组件进行分布式部署 组合和使用服务层是soa的基础 可以直接被应用调用 从而有效控制系统中与软件代理的人为依赖性soa的几个关键特性 一种粗粒度 松耦合服务架构 服务之间通过简单 精确定义适配器进行通讯 不涉及底层编程适配器和通讯模型 rpcvs document rpc耦合密切些相对脆弱仅仅是调用document耦合松散些对应用修改适应性好没有序列化 反序列化问题需要额外的设计工作需要解释客户消息内容 然后进行相应操作 考虑webservices的几个理由 业务上需要与外部客户通信技术上应用需要与其它语言编写的客户程序通信客户在防火墙之外管理上管理托管webservice应用 什么时候不要使用webservices 客户程序与应用使用相同语言编写通信开销大序列化或者远程访问开销大webservices xml处理开销大 don tusexmltocommunicateunlessyoureally reallyhaveto floydmarinescu themiddlewarecompany永远记住 webservices xml是用于集成的 apacheaxis apacheextensibleinteractionsystem 是apachewebservice项目中的子项目最初起源于ibm的 soap4j 最早的一批用于构造基于soap应用的frameworkjboss was等重要的应用服务器都集成它 典型的web服务支持平台 服务器端axis句柄链处理架构 用户配置一系列的handler 构成handlerchainaxis一次调用handler处理消息 含context 类似于interceptor 截取器 客户端axis句柄链处理架构 axis的子系统 二 soap 1 soap概述2 数据表示3 消息格式4 协议映射 简单对象访问协议 soap 是网络环境中交换信息的简单协议为网络环境下软件之间结构化 类型化信息的交换提供了一种基于xml的机制它可以广泛地用于基于消息的系统和基于rpc的系统soap被设计为可以与各种其它协议结合使用但目前soap主要和http及http扩展框架相结合 1 soap概述 简单地讲 soap http rpc xml即 soap以http作为底层通讯协议以rpc作为一致性的调用途径以xml作为数据传送的格式soap的设计原则是 简单 易于扩展soap的设计忽略了如下几方面的功能 1 分布式垃圾回收 2 消息的批处理 3 对象引用 4 对象激活 soap的数据表示完全不同于以往互操作协议的表示方法以往的互操作协议都将调用语句编排为二进制的字节流的形式soap采用xml作为自己的数据表示方法xml是与html类似的基于文本的标记语言soap将调用语句编排为文本式的字符流的形式 2 数据表示 soap消息是一个xml文档包括 一个必需的soap封装一个可选的soap头一个必需的soap体 3 消息格式 soap封装定义了描述信息和如何处理信息的框架用于指定用xmlschema来描述xml数据的编码规则封装可以包含名域声明和附加属性如果包含附加属性 这些属性必须限定名字域类似的 envelope 可以包含附加子元素这些也必须限定名字域且跟在soap体元素之后 1 soap封装 soap消息头是soap消息的可选部分用来扩展其它诸如安全 事务等服务的重要机制如果出现的话 必须是soap封装元素的第一个直接子元素soap头可以包含多个soap块每个都是soap头元素的直接子元素所有soap头的直接子元素都必须限定名字域 2 soap消息头 soap体在soap消息中必须出现且必须是soap封装元素的直接子元素soap体可以包括多个条目每个条目必须是soap体元素的直接子元素soap体元素的直接子元素可以限定名字域 3 soap体 soap自然地遵循http的请求 应答消息模型使得soap的请求和应答参数可以包含在http请求和应答中 soaphttp遵循http中表示通信状态信息的http状态码的语义例如 2xx状态码表示这个包含了soap组件的客户请求已经被成功的收到 理解和接受下页的代码是一个使用post的soaphttp例子该消息通过http发出一条请求 获取股票代码为abc的最新交易价格 post stockquotehttp 1 1host content type text xml charset utf 8 content length nnnnsoapaction some uri 5abc 1 互操作开销不同iiop jrmp使用二进制的字节流形式编排消息 cdr xdr soap采用字符型的xml编排消息soap消息要比iiop jrmp消息长得多soap的编排开销大 占用内存空间大2 表达能力不同soap易于学习 易于开发 易于调试soap不支持消息的批处理 对象引用 对象激活等特性降低了soap的表达能力并使得基于soap的交互受到限制而iiop jrmp等则不存在这种限制 与其它协议的比较 3 适应能力不同iiop jrmp严重制约于防火墙防火墙一般由两个路由器与一个应用程序网关构成路由器负责ip层的分组信息列出可接受 禁止的源端和目标端等信息应用程序网关在应用程序级进行控制根据头信息字段 消息长度 消息内容等决定传送还是丢弃消息这是iiop jrmp的应用受到限制的核心因素之一soap则基本不受其限制4 适用环境不同jrmp适用于使用java的应用系统iiop soap支持各种语言 因此适用面更广iiop适合于同一个防火墙内部之间的交互而soap则适合于跨越防火墙的交互 三 wsdl 1 概述2 文档结构3 例子4 向soap的映射 1 概述 wsdl webservicesdescriptionlanguage 是一个建议性标准2000年6月microsoft提出了 web服务 术语 把web服务作为 net计划重要组件在microsoft的sdl servicedescriptionlanguage和scl soapcontractlanguage 和ibm的nassl networkaccessibleservicespecificationlanguage 这两项技术的结合 形成了wsdl的基础 scl采用xml来描述应用程序所交换的消息 nassl描述服务接口和实现细节2000年9月25日ibm microsoft和ariba提出wsdl1 02001年3月15日 他们提交的wsdl1 1成为w3c的note2002年7月9日提出wsdl1 22003年11月10日提出wsdl2 0 类型 消息 端口类型 绑定 服务 操作 操作 端口 抽 象 定 义 具 体 说 明 wsdl 文档 代表依赖关系 代表包含关系 2 文档结构 类型 独立于计算机和语言的类型定义使用某一类型系统 例如xsd 进行数据类型定义的容器用于描述被交换的消息消息 对通信数据的一个抽象 类型化定义一个消息包含多个逻辑部分每一个都与某一个类型系统中的定义相关联包含函数参数 输入与输出分开 或文档说明端口类型 由一个或多个端点支持操作的抽象集合每个操作对应于一个输入消息与一个输出消息它引用消息节中的消息定义来说明函数基调操作名称 输入参数和输出参数等 1 抽象定义 绑定 为一个由特定端口类型定义的操作与消息指定具体的协议及数据格式规范服务 指定每个绑定的端口地址 2 具体说明 3 例子 interfacefoosample longfoo longarg 用omg idl表示为 对应的soap请求消息为 5131953 4 向soap的映射 5131953 与其它描述方法的比较 有的以描述结构化程序的功能为主例如rpc idl微软的 idl有的以描述对象的功能为主例如corba的idl有的以描述服务为主例如webservice的wsdl 1 描述对象不同 有的以具体计算机语言的方式表达例如sun的javainterface有的以独立于具体的计算机语言但十分类似于计算机语言的方式表达例如 rpc idl微软的 idlcorba的idl有的以xml为方式表达例如 webservice的wsdl 2 描述方式不同 有的仅描述接口的语法信息例如 rpc idl微软的 idlcorba的idl有的还包括与底层协议的绑定信息例如 wsdl等在corba中这部分信息包含在ior中 3 描述内容不同 如何为web系统增加webservice接口下面模块可以暴露为webservices ejbspojos后面的例子针对ejb 四 支持web服务的j2ee应用 jax rpc javaapiforxml basedrpcjava世界的webservice编程模型规范如何以类似rpc的方式调用webservicejax rpc的客户端编程模式有以下的三种 staticstub 静态的客户端存根调用 dynamicproxy 部分动态的代理调用 dynamicinvocationinterface dii 动态调用接口 三种jax rpc的客户端编程模式 staticstub 1 首先通过映射转换将服务描述的wsdl文档生成客户端的java存根2 然后实例化服务的locator实例3 通过loacator获得服务客户端的实例4 用客户端实例去调用服务 packageitso test importjava io importjava util importitso test publicclassweatherforecastclient publicstaticvoidmain string args try weatherforecastservicelocatorwsl newweatherforecastservicelocator weatherforecastservicews weatherforecastservice wsl getweather stringtemperature ws gettemperature system out println temperature system out println weatherforecastclientcompleted catch exceptione e printstacktrace dynamicproxy与staticstub不同的是可以指定生成的客户端实例 importjavax xml namespace qname importjava io importjava util publicclassweatherforecastdynamicproxyclient publicstaticvoidmain string args try weatherforecastservicelocatorwsl newweatherforecastservicelocator qnameqn newqname weatherforecast weatherforecastws weatherforecast wsl getport qn weatherforecast class stringtemperature ws gettemperature system out println temperature system out println dynamicproxyjavaclientcompleted catch exceptione e printstacktrace 一个汽车网站的例子 例子构成 jspscontrollerservletstatelesssessionbean inventoryfacadebeanhibernatedaos暴露对象 inventoryfacadebean findallavailablecars 服务端点接口 将业务方法暴露为webservices类似于服务器端的stub类似于ejbremoteinterface packagecom jbossatwork ws serviceendpointinterfaceforinventoryfacade publicinterfaceinventoryendpointextendsjava rmi remote publiccom jbossatwork ws cardtoarrayfindavailablecars throwsjava rmi remoteexception inventoryendpoint java 修改ejb jar xml inventoryfacadesbinventoryfacade com jbossatwork ws inventoryendpoint webservices xml 定义并注册inventoryservicewebservice将serviceendpointinterfaceclass绑定到inventoryfacadebeanejb告诉j2eeappserver到哪里找wsdl与jax rpc映射文件 mappingfiles inejbjarfile inventoryservicemeta inf wsdl inventoryservice wsdlmeta inf inventory mapping xmlinventoryinventoryendpointportcom jbossatwork ws inventoryendpointinventoryfacade jax rpc映射文件 帮助jax rpc编译器将java对象映射到wsdl对象复杂的java对象导致复杂的jax rpc与wsdl文件 com jbossatwork wshttp localhost 8080 jbossatwork ws typescom jbossatwork wshttp localhost 8080 jbossatwork wscom jbossatwork dto cardtoarraytypens cardtoarraycomplextypecarscars com jbossatwork dto cardtotypens cardtocomplextypeididmakemakemodelmodelmodelyearmodelyear statusstatuscom jbossatwork ws inventoryserviceservicens inventoryserviceinventoryendpointportinventoryendpointport com jbossatwork ws inventoryendpointporttypens inventoryendpointbindingns inventoryendpointbindingfindavailablecarsfindavailablecarscom jbossatwork dto cardtoarraywsdlmsgns inventoryendpoint findavailablecarsresponseresult wsdlfile inventoryfacadeinventoryjbossatwork ws inventoryservice 修改wsdlurl 修改ejb ejb bean name inventoryfacade view type all wsee port component name inventory wsdl port inventoryendpointport service endpoint interface com jbossatwork ws inventoryendpoint service endpoint bean com jbossatwork ejb inventoryfacadebean ejb interface service endpoint class com jbossatwork ws inventoryendpoint publicclassinventoryfacadebeanimplementssessionbean ejb interface method view type all publiccardtoarrayfindavailablecars throwsejbexception cardtoarraycardtoarray newcardtoarray cardto cars cardto listavailablecars toarray newcardto 0 cardtoarray setcars cars returncardtoarray ejb interface method view type both publiclistlistavailablecars throwsejbexception webservices与collections packagecom jbossatwork dto importjava io serializable importcom jbossatwork dto cardto publicclasscardtoarrayimplementsserializable privatecardto cars publiccardtoarray publiccardto getcars retu

温馨提示

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

评论

0/150

提交评论