




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、WebService简介与实践什么是WebService? WebServices是建立可互操作的分布式应用程序的新平台 WebService提供了一个在不同的应用和平台之间的交互操作标准。 WebService实现了软件-软件之间的交互,实践了构件开发的概念WebService结构服务提供者服务请求者服务代理者UDDI1.注册服务2.查找服务3.绑定服务基于Soap协议传递参数调用webservice基于soap协议返回webservice结果WebService层次结构UDDI : Universal Description Discovery and Integration (通用描述、
2、发现与集成服务 )WSDL: Web Service Description Language(网络服务描述语言 )SOAP : Simple Object Access Protocol(简易对象访问协议 ):UUDI UDDI是一种目录服务,企业可以使用它对Webservices进行注册和搜索。 UDDI是一个独立于平台的框架,用于通过使用Internet来描述服务,发现企业,并对企业服务进行集成。 UDDI是一种由WSDL描述的webservices界面的目录UUDI UDDI计划是一个广泛的,开放的行业计划,它使得商业实体能够(1)彼此发现,(2)定义他们怎样在internet上互相作
3、用,并在一个全球的注册体系架构中共享信息 但是现实中并没有像上述所说的那么欢迎,IBM,MS,SAP在2006年就关闭了他们发布的UUDI,定义UUDI的组织也在2007关闭了 现在可以去http:/ SOAP(SimpleObjectAccessProtoc01)简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议。 它包括四个部分: SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它,以及如何处理它们的框架;SOAP SOAP编码规则(encodingrules),用于表示应用程序需要使用的数据类型的实例。主
4、要是WSDLbinding和SOAPmessage之间的转换映射关系 SOAPRPC表示(RPCrepresentation),表示远程过程调用和应答的协定。 SOAP绑定(binding),使用底层协议交换信息。SOAP是在应用层上层的一种协议,可以由HTTP、SMTP、MIME协议进行传送。WSDL WSDL是一个用于精确描述Web服务的文档,WSDL文档是一个遵循WSDLXML模式的XML文档。WSDL文档将Web服务定义为服务访问点或端口的集合。 一个WSDL文档通常包含7个重要的元素,即types、import、message、portType、operation、binding、s
5、ervice元素。这些元素嵌套在definitions元素中,definitions是WSDL文档的根元素WSDL Types-数据类型定义的容器,它使用某种类型系统(一般地使用XMLSchema中的类型系统)。 Message-通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构。 Operation-对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对 PortType-对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持。 Binding-特定端口类型的具体协议和数据格式规范的绑
6、定 Port-定义为协议/数据格式绑定与具体Web访问地址组合的单个服务访问点。 Service-相关服务访问点的集合。实践 发布webservice的方式: jdk1.6之后可直接采用Jax-ws发布 采用相应的框架如Axis2进行发布 调用webservice的方式 采用javaAPI来进行调用采用Axis2的类库进行调用 调用webservice获取天气实例直接采用Jax-ws发布 采用API发布服务是通过注解的形式,常用的注解有 WebService(name,targetNamespace,serviceName,wsdlLocation,endpointInterface) Web
7、Method(operationName,action) SOAPBinding(style,use,parameterStyle) WebResult(name,targetNamespace) WebParam(name,targetNamespace,mode,header) 通过这些注解和注解的属性和WSDL中的参数有映射关系ExampleWebServicepublicclassHelloWorldWebMethodpublicStringhello(Stringname)returnHello,+name+n;publicstaticvoidmain(Stringargs)/cre
8、ateandpublishanendpointHelloWorldhello=newHelloWorld();Endpointendpoint=Endpoint.publish(http:/localhost:9095/hello,hello);采用Axis2进行发布_POJO发布 Tomcat服务器负责监听服务请求 将axis2.war包放到webapps 直接将class文件放到webappsaxis2WEB-INFpojo,pojo这个文件夹可能需要创建 默认POJO类中所有的public方法均发布为webservice 无需任何配置即可发布,且默认是热发布,冷更新,但可以修改webap
9、psaxis2WEB-INFconfaxis2.xml来进行设置,也可以设置非POJO文件夹进行POJO发布 注意事项:java类不能有package采用Axis2进行发布_使用service.xml发布webservice 需要一个service.xml进行配置WebService例子service.MyService采用Axis2进行发布_使用service.xml发布webservice 将class文件和services.xml文件进行打包成.aar放到webappsaxis2WEB-INFservice 打包命令:jarcvfws.aar.采用javaAPI来进行调用URLurl=n
10、ewURL(http:/localhost:8888/ns?wsdl);/通过QName指明服务的具体信息/服务的唯一标识名,包括三个部分:名称空间URI和本地部分的QName,即前缀QNamesName=newQName(/,MyServiceImplService);/创建服务:指定的WSDL文档位置和服务限定名称必须唯一标识,这样就可以得到这个服务对象,下面只要得到Port并Serviceservice=Service.create(url,sName);/实现接口,参数serviceEndpointInterface指定返回的代理所支持的
11、服务端点接口。/在此方法的实现中,JAX-WS运行时系统承担选择协议绑定(和端口)以及配置相应代理的责任。IMyservicems=service.getPort(IMyservice.class);System.out.println(ms.sayhello();采用axis2的类库进行调用RPCServiceClientserviceClient=newRPCServiceClient();Optionsoptions=serviceClient.getOptions();/指定调用WebService的URLEndpointReferencetargetEPR=newEndpointRe
12、ference(http:/localhost:8080/axis2/services/HelloService);options.setTo(targetEPR);/指定sayHello方法的参数值ObjectopAddEntryArgs=newObject;Classclasses=newClassString.class;/指定要调用的sayHelloToPerson方法及WSDL文件的命名空间QNameopAddEntry=newQName(/axis2,sayHello);/当方法没有参数时,invokeBlocking方法的第二个参数值不能是n
13、ull,而要使用newObject/如果被调用的WebService方法没有返回值,应使用RPCServiceClient类的invokeRobust方法System.out.println(serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs,classes)0);采用axis2的类库进行调用 用wsdl2java简化客户端的编写 Axis2提供了一个wsdl2java.bat命令可以根据WSDL文件自动产生调用WebService的代码 在使用wsdl2java.bat命令之前需要设置AXIS2_HOME环境变量 示例:%AXIS2_
14、HOME%binwsdl2java-urihttp:/localhost:8080/axis2/services/HelloService?wsdl-pclient-s-ostub 其中-url参数指定了wsdl文件的路径,可以是本地路径,也可以是网络路径-p参数指定了生成的Java类的包名,-o参数指定了生成的一系列文件保存的根目录采用axis2的类库进行调用HelloServiceStubstub=newHelloServiceStub();HelloServiceStub.SayHelloToPersongg=newHelloServiceStub.SayHelloToPerson();gg.setName(张三);System.out.println(stub.sayHello().get
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025版城市更新项目抵押担保借款合同纠纷诉状
- 2025版发电机组新能源发电项目投资与建设合同
- 二零二五年光伏发电系统工程劳动合同范本
- 二零二五年度物流园区公路运输合同范本
- 二零二五年度云计算与大数据合伙协议示范范本
- 二零二五年度时尚品牌模特合约保密条款与肖像权保护
- 2025版管桩行业节能减排与环保合同规范
- 二零二五版机械制造与质量认证合同
- 防恐应急知识课件
- 福建省泉州七中学2026届中考适应性考试语文试题含解析
- 2025年浙江省学军中学物理高一下期末达标检测试题含解析
- 2025山西中煤一局集团有限公司应届高校毕业生招聘19人(第二批次)笔试参考题库附带答案详解版
- 2025年医保基金监管制度考试题库(案例解析与答案)
- 心肺复苏后常见并发症及处理
- 2025年贵州省中考数学试卷(含答案详解)
- 棒线轧钢培训课件
- 2025-2030中国住宅新风机行业经销模式与应用规模建议报告
- 老人发热护理课件
- 2025年陕西省社区工作者招聘真题汇编与答案详解
- 合同审查法律培训课件
- 烧伤疤痕相关护理
评论
0/150
提交评论