




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JDK6 webservice的应用一、 Web Services简介什么是Web Services Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。这就是说,你能够用编程的方法通过Web来调用这个应用程序。基于浏览器的瘦客户应用程序,即BS结构,是目前流行的,使得Web Services的应用越来越广泛。Web Services 是一种构建应用程序的模型,并能在所有支持 Internet 通讯的操作系统上实施运行。Web Services 令基于组件的开发和 Web 的结合达到最佳,基于组件的对象模型,利用 SOAP 和 XML对这些模型在通讯方面作了进一步的扩展以消除特殊对象模型的障碍。因为是使用XML作为传输的介质,所以可以跨平台跨语言。Web Services 实现远程访问,有点类似RMI(远程方法调用)。 但它是利用 HTTP 和 SOAP 协议是商业数据在 Web 上传输,SOAP通过 HTTP 调用商业对象执行远程功能调用,Web 用户能够使用 SOAP 和 HTTP通过 Web 调用的方法来调用远程对象。Web Services 结构客户根据 WSDL描述文档,会生成一个 SOAP 请求消息。Web Services 都是放在Web服务器上面,客户生成的SOAP请求会被嵌入在一个HTTP POST请求中,发送到 Web 服务器来。Web 服务器再把这些请求转发给 Web Services 请求处理器。请求处理器的作用在于,解析收到的 SOAP 请求,调用 Web Services,然后再生成相应的 SOAP 应答。Web 服务器得到 SOAP 应答后,会再通过 HTTP应答的方式把信息送回到客户端。什么是WSDLWSDL是WebServicesDescriptionLanguage的缩写,是一个用来描述Web服务和说明如何与Web服务通信的XML语言。Web Services服务器把一个对像绑定到一个URL 上(如http:/localhost:8080/webservices/hello),客户端就可以能过绑定的地址(如:http:/localhost:8080/webservices/hello?wsdl)取得WSDL文件,该文件是标准的XML 格式,描述了被绑定对像的信息,包括可调用的方法,参数,及参数类型,返回值类型,异常类型等。客户端就是通过这些信息调用服务器的方法。二、 JKD6 对Web Services的支持 JDK6提供了对Web Service原生的支持,对Web Service进行了完美的封装,完全隐藏了底层内容,甚至可以不用了解wsdl的具体规范。使用Web Service就像使用本地方法一样简单。下面来举个例子,依然从最简单的HelloWorld入手。HelloWorld例子STEP 1,服务器端Bean说明服务器端的Java类若要成为一个实现了Web Service的bean,它需要遵循下边这些原则:这个类必须是public类、不能是final的或者abstract、必须有一个公共的默认构造函数、绝对不能有finalize()方法。若要成为一个实现了Web Service的Bean的方法必须遵循这些原则:这个方法必须是public,它的参数、返回值、和异常在每个JAX RPC规范中都描述了Java转化成XML/WSDL映射文件的规则,参数和返回值可以是原始类型、数组等等。下面是服务器端的类HelloWorld.java:package test.jws.service;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.WebResult;import javax.jws.WebService;import javax.jws.soap.SOAPBinding;WebService(targetNamespace = )SOAPBinding(style = SOAPBinding.Style.RPC)publicclass HelloWorld WebMethod(action=toSayHello,operationName=toSayHello,exclude=false) WebResult(name=returnWord)/自定义该方法返回值在WSDL中相关的描述 public String sayHello(WebParam(name=userName)String userName) returnHello: + userName; WebMethod publicint getExp(int i, int j) return i / j; 这是服务器端普通的业务类,通过WebService、WebMethod等注释描述来生成WSDL文件。STEP 2,执行wsgen命令本例中到HelloWorld类所在的目录中新建一个命名为wsdl的文件夹,运行:wsgen -cp ./bin -r ./wsdl -s ./src -d ./bin -wsdl test.jws.service.HelloWorld。执行后会在wsdl文件夹中生成HelloWorld的wsdl描述文件,src文件夹中生成依赖类,如异常说明类,bin中生成依赖类的class文件STEP 3,发布Web Service Bean启动服务类StartService.java:package test.jws.service;import javax.xml.ws.Endpoint;publicclass StartService publicstaticvoid main(String args) Endpoint.publish(http:/localhost:8080/webservice/hws, new HelloWorld(); 此类很简单,能过Endpoint类的publish()方法发布实例发布地址为:http:/localhost:8080/webservice/hws,必需明确指明http协议,主机IP 地址及端口号,在IE上输入 http:/localhost:8080/webservice/hws?wsdl返回以下内容说明发布成功 STEP 4,生成客户端执行类在cmd命令中执行 wsimport -d ./bin -s ./src- ptest.jws.client.ref 82:8080/webservice/hws?wsdl 后在在src目录下生成客户端调用的两个类: test.jws.client.ref.HelloWorld.java 根据wsdl描述生成的客户端执行类test.jws.client.ref.HelloWorldServices.java 通过此类负责解悉wsdl初始化客户端HelloWorld实例在bin目录下生成对应的类文件。 注意:执行wsimport命令时STEP 3的服务必需启动,否则无法生成STEP 4,客户端调用客户端调用过程ClientRun.java:package test.jws.client;import test.jws.client.ref.*;publicclass ClientRun /* *paramargs */ publicstaticvoid main(String args) HelloWorldService hws = new HelloWorldService(); HelloWorld hw = hws.getHelloWorldPort(); System.out.println(hw.getExp(9, 3); System.out.println(hw.toSayHello(zhuoshiyao); 启动STEP 3中的服务,运行ClientRun后,制控台输出:3Hello:zhuoshiyao注意:经测试,用Endpoint.publish(http:/localhost:8080/webservice/hws, new HelloWorld()方式在Tomcat6中发布,不会存在端口号与路径冲突。JKD6 中定义的Web Service注释1. WebService 标注要暴露为WebServices的类或接口,用于申修饰类或接口,包含属性targetNamespace 定义命名空间,默认为”http:/”+”包名倒排”name Web Service 的名称,默认为类名,例如:portName Web Service 的端口名称serviceName Web Service 的服务名称,例如 . wsdlLocation描述服务的预定义 WSDL 的位置 endpointInterface定义服务抽象 Web Service 协定的服务端点接口的完整名称 2. SOAPBinding 定义Web Service 在SOAP中的消息协议,用于申修饰类或接口,包含属性style 定义消息的编码类型user 定义消息的格式化类型3. WebMethod 定义Web Service运作的方法,包含属性action 操作的活动 operationName与此方法匹配的 wsdl:operation 的名称exclude 标注此方法是否被暴露,默认为false4. WebResult 定义返回值,返回值类型不能为接口类或抽象类,而且必须有个不带参的构造函数,包含属性name返回值的名称partName表示此返回值的 wsdl:part 的名称targetNamespace返回值的 XML 名称空间header如果为 true,则结果是从消息头而不是消息正文获取的5. WebParam 定义方法的参数,参数类型不能为接口类或抽象类,而且必须有个不带参的构造函数,包含属性name参数名称partName表示此参数的 wsdl:part 的名称targetNamespace参数的 XML 名称空间header如果为 true,则结果是从消息头而不是消息正文获取的mode参数的流向(IN、OUT 或 INOUT 之一)wsgen与wsimport命令说明wsgen命令的主要功能是用来生成合适的JAX-WS。它读取Web Service的终端类文件,在我们的例子中就是test.jws.service.HelloWorld,同时生成所有用于发布Web Service所依赖的源代码文件和经过编译过的二进制类文件,通常Web Service Bean中用到的异常类会另外生成一个描述Bean。它还能生成WSDL和符合规范的HelloWorld类Web Service。wsgen从资源文件生成一个完整的操作列表并验证是合法的。如果Web Service Bean中的主法有申明抛出异常,这一步是必需的,否则服务器无法绑定该对像。命令参数说明:-cp 定义classpath-r 生成 bean的wsdl文件的存放目录-s 生成发布Web Service的源代码文件的存放目录(如果方法有抛出异常,则会生成该异常的描述类源文件)-d 生成发布Web Service的编译过的二进制类文件的存放目录(该异常的描述类的class文件) wsimport命令的主要功能是根据wsdl文件生成客户端存根及框架,负责与Web Service 服务器通信,并在将其封装成实例,客户端可以直接使用,就像使用本地实例一样。命令参数说明:-d 生成客户端执行类的class文件的存放目录-s 生成客户端执行类的源文件的存放目录-p 定义生成类的包名三、 附录:WSDL说明1、WSDL 文档结构WSDL 文档是利用这些主要的元素来描述某个 web service 的:元素定义web service 执行的操作web service 使用的消息web service 使用的数据类型web service 使用的通信协议一个 WSDL 文档的主要结构是类似这样的: definition of types. definition of a message. definition of a port.definition of a binding.WSDL 文档可包含其它的元素,比如 extension 元素,以及一个 service 元素,此元素可把若干个 web services 的定义组合在一个单一的 WSDL 文档中。WSDL 端口 元素是最重要的 WSDL 元素。 它可描述一个 web service、可被执行的操作,以及相关的消息。 可以把 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。 WSDL 消息 元素定义一个操作的数据元素。每个消息均由一个或多个部件组成。可以把这些部件比作传统编程语言中一个函数调用的参数。WSDL types 元素定义 web service 使用的数据类型。 为了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型。 WSDL Bindings 元素为每个端口定义消息格式和协议细节。WSDL 实例这是某个 WSDL 文档的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个体化治疗与神经保护-洞察及研究
- 宁夏短期用工劳动合同范文
- 稀土阻尼材料优化-洞察及研究
- 生物活性成分分离-洞察及研究
- 项目经理批评与自我批评会议方案设计
- 政务服务流程优化与标准化
- 林氏急症诊疗新策略-洞察及研究
- 农田灌溉工程施工方案与应急预案
- 影响乡村不从农青年工作与生活调适因素的调查研究
- 智能传感器与船舶健康监测-洞察及研究
- T-CBDA 86-2025 建筑幕墙、采光顶及金属屋面工程质量验收标准
- 厨房消防安全培训
- 小陈 税务风险应对常见指标与答复思路
- 2025年《中华人民共和国档案法》知识培训试题及答案
- 2026年高考政治一轮复习:必修2《经济与社会》知识点背诵提纲
- 2025至2030年中国建筑膜行业市场调查研究及发展趋势预测报告
- 2025年急诊急救试题(附答案)
- 变电站新员工培训课件
- 会所会议室管理制度
- 2025年北京市中考语文试卷(含答案与解析)
- (正式版)HGT 22820-2024 化工安全仪表系统工程设计规范
评论
0/150
提交评论