ImageVerifierCode 换一换
格式:DOCX , 页数:17 ,大小:572.86KB ,
资源ID:14431850      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/14431850.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Web Service.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Web Service.docx

1、Web ServiceWeb Service一、 什么叫Web Service?是一种遵守SOAP协议,并基于WSDL规范用于网络间传输数据的网络服务;它可以独立于平台和语言可扩展也是基于HTTP传输,提供给应用程序之间的通信,也是一种服务。二、 什么叫SOAP (Simple Object Access Protocol)?简易对象访问协议,是一种通信协议,通过因特网进行通信绕过防火墙、可扩展、在应用程序之间发送信息。是基于XML语言。语法规则:1. 必须用XML编码2. 必须使用SOAP Envelope 命名空间3. 必须使用SOAP Encoding 命名空间4. 三、 什么叫WSDL

2、 (Web Service Description language),WebService描述语言? WSDL文档分为两个部分。顶部由抽象定义组成,底部由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随机器或语言而变的元素。这就定义了一系列服务,截然不同的网站都可以来实现,随网站而异的东西如序列化便归入底部,因为它包含具体的定义。1. 抽象定义:a) Types 独立与机器和语言的类型定义b) Message 包括函数参数(输入与输出分开)或文档描述c) PortTypes 引用消息部分中消息定义来描述函数签名(操作名、输入参数、输出参数)2. 具体定义:a

3、) Bindings PortTypes部分的每一操作在此绑定实现b) Services 确定每一绑定的端口地址各结点间的关系: Message使用Types的定义 PortTypes使用Message的定义 Bindings引用PortTypes Services引用Bindings、 PortTypes和Bindings包含了operation元素 Services包含了port元素 PortTypes里的operation的元素由Bindings的operation元素进一步修改或描述。 WSDL的列表要求所有的栏以固定的顺序出现:import, types, message, port

4、Type, binding, service。所有的抽象可以是单独存在于别的文件中,也可以从主文档中导入。WSDL文件示例让我们来研究一下WSDL文件,看看它的结构,以及如何工作。请注意这是一个非常简单的WSDL文档实例。我们的意图只是说明它最显著的特征。以下的内容中包括更加详细的讨论。?xml version=1.0 encoding=UTF-8 ? definitions name=FooSample targetNamespace=http:/tempuri.org/wsdl/ xmlns:wsdlns=http:/tempuri.org/wsdl/ xmlns:typens=http:

5、/tempuri.org/xsd xmlns:xsd=http:/www.w3.org/2001/XMLSchema xmlns:soap=http:/schemas.xmlsoap.org/wsdl/soap/ xmlns:stk= xmlns=http:/schemas.xmlsoap.org/wsdl/ types schema targetNamespace=http:/tempuri.org/xsd xmlns=http:/www.w3.org/2001/XMLSchema xmlns:SOAP-ENC=http:/schemas.xmlsoap.org/soap/encoding/

6、 xmlns:wsdl=http:/schemas.xmlsoap.org/wsdl/ elementFormDefault=qualified /schema /types message name=Simple.foo part name=arg type=xsd:int/ /message message name=Simple.fooResponse part name=result type=xsd:int/ /message portType name=SimplePortType operation name=foo parameterOrder=arg input messag

7、e=wsdlns:Simple.foo/ output message=wsdlns:Simple.fooResponse/ /operation /portType binding name=SimpleBinding type=wsdlns:SimplePortType stk:binding preferredEncoding=UTF-8 / soap:binding style=rpc transport=http:/schemas.xmlsoap.org/soap/http/ operation name=foo soap:operation soapAction=http:/tem

8、puri.org/action/Simple.foo/ input soap:body use=encoded namespace=http:/tempuri.org/message/ encodingStyle=http:/schemas.xmlsoap.org/soap/encoding/ / /input output soap:body use=encoded namespace=http:/tempuri.org/message/ encodingStyle=http:/schemas.xmlsoap.org/soap/encoding/ / /output /operation /

9、binding service name=FOOSAMPLEService port name=SimplePort binding=wsdlns:SimpleBinding soap:address location=http:/carlos:8080/FooSample/FooSample.asp/ /port /service /definitions第一行申明该文档是XML。尽管这并不是必需的,但它有助于XML解析器决定是否解析WSDL文件或只是报错。第二行是WSDL文档的根元素:definitions。一些属性附属于根元素,就像schema子元素对于types元素。 types元素包

10、含了Types栏。如果没有需要声明的数据类型,这栏可以缺省。在WSDL范例中,没有应用程序特定的types声明,但我仍然使用了Types栏,只是为了声明schema namespaces。 message元素包含了Messages栏。如果我们把操作看作函数,message元素定义了那个函数的参数。message元素中的每个part子元素都和某个参数相符。输入参数在message元素中定义,与输出参数相隔离-输出参数有自己的message元素。兼作输入、输出的参数在输入输出的message元素中有它们相应的part元素。输出message元素以Response结尾,就像以前所用的fooRespo

11、nse。每个part元素都有名字和类型属性,就像函数的参数有参数名和参数类型。 用于交换文档时,WSDL允许使用message元素来描述交换的文档。 part元素的类型可以是XSD基类型,也可以是SOAP定义类型(soapenc)、WSDL定义类型(wsdl)或是Types栏定义的类型。 一个PortTypes栏中,可以有零个、单个或多个portType元素。由于抽象PortType定义可以放置在分开的文件中,在某个WSDL文件中没有portType元素是可能的。上面的例子里只是用了一个portType元素。而一个portType元素可在operation元素中定义一个或是多个操作。示例仅使用

12、了一个名为foo的operation元素。这和某个函数名相同。operation元素可以有一个、两个、三个子元素:input, output 和fault元素。每个input和output元素中的消息都引用Message栏中的相关的message元素。这样,示例中的整个portType元素就和以下的C函数等效。 Bindings栏可以有零个、一个或者多个binding元素。它的意图是制定每个operation通过网络调用和回应。Services栏同样可以有零个、一个、多个service元素。它还包含了port元素,每个port元素引用一个Bindings栏里的binding元素。Binding

13、s和Services栏都包含WSDL文档。Namespacedefinitions和子节点schema都是namespace属性:每个namespace属性都声明了一个缩略语,用在文档中。例如xmlns:xsd就为http:/www.w3.org/2001/XMLSchema定义了一个缩略语(xsd)。这就允许对该namespace的引用只需简单的在名字前加上前缀就可以了,如:xsd:int中的xsd就是合法的类型名。普通范围规则可运用于缩略前缀。也就是说,前缀所定义的元素只在元素中有效。Namespace派什么用?namespace的作用是要避免命名冲突。如果我建立一项Web Service

14、,其中的WSDL文件包含一个名为foo的元素,而你想要使用我的服务与另一项服务连接作为补充,这样的话另一项服务的WSDL文件就不能包含名为foo的元素。两个服务器程序只有在它们在两个事例中表示完全相同的东西时,才可以取相同的名字。如果有了表示区别的namespace,我的网络服务里的foo就可以表示完全不同于另一个网络服务里foo的含义。在你的客户端里,你只要加以限制就可以引用我的foo。targetNamespace属性声明了一个namespace,元素中所有的声明的名字都列于其内。在WSDL示例中,definitions的targetNamespace 是http:/tempuri.org

15、/wsdl。这意味着所有在WSDL文档中声明的名字都属于这个namespace。schema元素有自己的targetNamespace属性,其值为 http:/tempuri.org/xsd ,在schma元素中定义的所有名字都属于这个namespace而不是main的target namespace。 schema元素的以下这行声明了默认的namespace。Schema中所有有效的名字都属于这个namespace。SOAP消息 对于使用WSDL的客户机和服务机来说,研究WSDL文件的一种方法就是决定什么来接受所发送的信息。尽管SOAP使用底层协议,如IP和HTTP等,但应用程序决定了服务器

16、与客户机之间交互的高级协议。也就是说,进行一项操作,比如echoint把输入的整数送回,参数的数目、每个参数的类型、以及参数如何传送等因素决定了应用程序特定的协议。有很多方法可以确定此类协议,但我相信最好的方法就是使用WSDL。如果我们用这种视角来看待它,WSDL不只是一种接口协议,而且是一种协议特定的语言。它就是我们超越固定协议(IP、HTTP等)所需要的应用程序特定协议。 WSDL可以确定SOAP消息是否遵从RPC或文档风格。RPC风格的消息(就是示例中所用的)看起来像是函数调用。而文档风格的消息则更普通,嵌套层次更小。下面的XML消息就是示例WSDL文件解析后的发送/接受效果,解析使用的

17、是MS SOAP Toolkit 2.0(MSTK2)中的SoapClient对象。WSDL的Types栏和Messages栏中的XML Schema WSDL数据类型是基于XML Schema: Datatypes(XSD)的,现在已经被W3C推荐。这一文档共有三个版本(1999,2000/10,2001),因此必须在namespace属性的definitions元素中指明所使用的是哪一个版本。 xmlns:xsd=http:/www.w3.org/2001/XMLSchema 在本栏和以后各部分,需使用以下简缩或前缀前缀 代表的Namespace 描述Soapenc http:/schem

18、as.xmlsoap.org/soap/encoding SOAP 1.1 encoding Wsdl http:/schemas.xmlsoap.org/wsdl/soap WSDL 1.1 Xsd http:/www.w3.org/2001/XMLSchema XML Schema XSD基类型 下表是直接从MSTK2文档中取出的,列举了MSTK2所支持的所有XSD基类型。它也告诉在客户端或服务器端的WSDL读取程序如何把XSD类型映射到在VB、C+和IDL中相应的类型。XSD定义了两套内建的数据类型:原始的和派生的。在下文中查阅内建数据类型的层次十分有益: http:/www.w3.or

19、g/TR/2001/PR-xmlschema-2-20010330 complex类型 XML schema允许complex类型的定义,就像C里是struct。例如,为了定义类似如下的C的struct类型:四、 d五、 Axis(Apache eXtensible Interaction System) 讲解及发布过程是一款开源的webservice运行引擎,它是SOAP协议的一个实现。下载地址:http:/www.apache.org/dyn/closer.cgi/ws/axis/1_4 下载axis-bin-1_4.zip后将压缩包解压出来的目录结构是:Docs:存放Axis 的说明文档

20、。Lib:存放Axis 的二进制发布包。Samples:存放利用Axis 发布的WebService 的示例代码。Webapps:存放安装Axis 的基础应用。Xmls:存放相关说明文档。把webapps下的文件夹axis拷到tomcat对应的webapps下,把tomcat运行起来访问:http:/localhost:8080/axis 然后点击上面页面的”Validation”连接,如图:该页显示Axis 的必需组件还缺少一个没有安装,两个可选组件也没有安装,单击上面的提示:必需组件: 可选组件: http:/xml.apache.org/security/分别下载:jaf-1_1-fr.

21、zip ,javamail-1_4.zip,xml-security-bin-1_2_1.zip包,然后把jaf-1_1-fr.zip里的Activation.jar,javamail-1_4.zip里的mail.jar,xml-security-bin-1_2_1.zip里的xmlsec-1.2.1.jar,xalan.jar都放到你的axis应用的WEB-INF/lib下然后在校验Axis,看到页面提示全部安装成功。Axis的WebService定制发布WSDD第一步:这时的准备工作已经做好,就把你写好的服务端应用文件包拷贝到%TOMCAT_HOME%webappsaxisWEB-INFc

22、lasses目录下第二步:在WEB-INF目录下创建一个deploy.wsdd文件,文件内容如下:简单的介绍下各个节点的含义,“HelloWorldWSDD”当然是这个WebService的名字,后面紧跟的java:RPC指的是服务类型。这里一共有有4种类型,分别RPC,Document,Wrapped和Message;parameter节点第一个当然是指出具体的类,第二个从字面上也很好理解:允许调用的方法。这里的配置告诉引擎可以调用所有的public方法,当然你也可以自己指定。第三步:cmd打开windows的控制台,进入:%TOMCAT_HOME%webappsaxisWEB-INF 目录

23、下键入如下命令:java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -l http:/localhost:8080/axis/servlet/AxisServlet deploy.wsdd(注意:该命令的后半部分是你部署的axis的Servlet访问地址加上你创建deploy.wsdd文件名,很多文档里给的此命令是错误的,执行时就会抛出异常)执行成功就会在控制台输出:同时也会在WEB-INF下生成一个server-config.wsdd文件;这时候你通过http:/localhost:8088/axis/servlet/Axi

24、sServlet 访问,在页面上就会多出你发布的名称HelloWorldWSDD及包括的方法或通过http:/localhost:8088/axis/services/HelloWorldWSDD?wsdl 直接访问到发布的信息页面:取消一个WebService的发布在WEB-INF目录下创建一个undeploy.wsdd文件,内容为: 文件创建好后同样采用cmd命令到到%TOMCAT_HOMwebappsaxisWEB-INF目录下,然后CMD 打开控制台,在控制台输入一个我们很熟悉的命令:java -Djava.ext.dirs=lib org.apache.axis.client.Adm

25、inClient -l http:/localhost:8088/axis/servlet/AxisServlet undeploy.wsdd运行后结果:以上就是一个简单的WebService的发布全过程。六、 WSDD介绍Axis特性介绍在编写deploy.wsdd文件时,每个service节点都有这样的子节点这个节点配置着你的service object 也就是你WebService服务的那个object ,在后面的value 里可以有三个选项request、session、application。requst:这个选项会让AXIS为每一个SOAP的请求产生一个服务对象,可以想像如果这个

26、webservice的对象足够复杂,而且SOAP的请求过多,这个选项是非常耗费服务器性能的。session:如果选择了session,程序就会给每个调用这个WebService的客户端创造一个服务对象。application:这个选项最彪悍,程序只会在内存里new出来一个服务对象,然后为所有WebService客户端服务。很显然这个选项不能储存客户端的一些个性化数据。所以在功能性上很多时候不能满足要求。 示例创建:1. 创建一个Handler类继承自BasicHandler抽象类,并且实现invoke方法同时做自己需要的处理即可2. 配置deploy.wsdd文件,如下:3. 编写Client端程序4. 服务端响应:客户端输出: Axis 的Handler 和Chain 机制就是一连串的Handler组成的链,由Chain来管理.通过创建一个HeadlerChain类继承于SimpleChain,在构造函数中实例出所需要的Handler类对象并使用this.addHandler(handler)方法添加。接下来编辑deploy.wsdd文件如下:七、

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1