




已阅读5页,还剩17页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
WebService及其应用,2,目标,了解WebService的基本概念 撑握使用XFire开发WebService的基本步骤 撑握XFire对象绑定 撑握XFire与Spring的集成,3,WebService是一种可供跨平台调用的服务组件。 WebService是完全基于XML 、XMLSchema等独立于平台、独立于软件供应商的标准。 WebService可用于创建可互操作的,分布式的应用程序平台。 WebService主要由三个方面组成:服务程序,服务的描述文件,以及服务的注册登记。,WebService概述,4,WebService概述,soap,5,XFire是下一代Java的soap框架,支持面向服务(SOA)的应用开发。 使用XFire开发WebService的基本步骤: 建立Web工程,添加Xfire的库文件 在web.xml中添加xfire的前端控制器XFireServlet 建立业务类及业务类接口 在services.xml文件中配置WebService 启动Web服务器 使用XFire客户端类库调用WebService,使用XFire开发WebService,6,XFire开发WebService,示例配置XFire前端控制器, XFireServlet org.codehaus.xfire.transport.http.XFireConfigurableServlet 0 XFireServlet /services/* ,7,XFire开发WebService,示例建立用于查询列车时刻的服务程序及接口,public class TrainServiceImpl implements TrainService public String findTrainTime(String train_no) /. return null; ,public interface TrainService /train_no车次 public abstract String findTrainTime(String train_no); ,8,XFire开发WebService,示例在services.xml中配置WebService, TrainService service.TrainService service.TrainServiceImpl wrapped literal application ,将services.xml添加到类路径下的/META-INF/xfire目录下,9,启动Web服务器后可通过访问Web应的/services/访问相应的WebService 示例列出应用中所有的Web服务,获取WebService,请求:http:/localhost:8090/webprj/services,10,XFire客户端工具提供了多种形式调用WebService 在拥有服务接口的情况下可通过建立XFireProxyFactory调用 在未知服务接口的情况下可通过Client或通过WSDL文档生成接口的方式调用MyEclipse等工具提供了直接通过WSDL文档生成WebService服务端口的向导。,客户端调用WebService,11,根据已知服务接口及参数类型调用,客户端调用WebService,String serviceURL = “http:/localhost:8090/sprja/services/UserService“; Service serviceModel = new ObjectServiceFactory().create( srv.UserService.class, null, “http:/srv/HelloService“, null); XFireProxyFactory serviceFactory = new XFireProxyFactory(); UserService service = (UserService) serviceFactory.create(serviceModel,serviceURL); User user = service.getUser(“tony“); System.out.println(user.getName();,12,xfire提供了XFireSpringServlet用于从Spring中导出Bean为WebService,示例web.xml配置,Spring整合WebService,xfire提供了两种方式可将Spring中注册的Bean导出为WebService 使用org.codehaus.xfire.spring.remoting.XFireExporter可将单个Bean导出为WebServices 利用JSR181注解导出WebServices, xfireServlet org.codehaus.xfire.spring.XFireSpringServlet xfireServlet /service/* ,13,示例配置将单个Bean导出为WebService,Spring整合WebService,14,通过JSR181的注解导出WebService的基本步聚 在Spring中注册org.codehaus.xfire.spring.remoting.Jsr181HandlerMapping 在Bean或Bean的Web服务接口中使用JSR181的注解,标识WebService的特征 在Spring中注册Bean,Spring整合WebService,15,注册Jsr181HandlerMapping,Spring整合WebService,16,使用JSR181注解标识服务接口,类以及在Spring中注册,Spring整合WebService,WebService(targetNamespace=““) public interface OrderService public abstract String addOrder(Order order); ,WebService(serviceName=“OrderService“,endpointInterface=“srv.OrderService“) public class OrderServiceImpl implements OrderService public String addOrder(Order order) . ,17,在已知服务接口的情况下,Xfire提供XFireClientFactoryBean用于在Spring中产生单个WebService的代理对象,Spring整合WebService客户端, http:/localhost:8090/xfireweb/service/OrderService2?wsdl ,18,WebService通过Internet被调用,安全显得非常重要。 WebService的安全验证主要有两种方式: 基于HTTP的验证方式 WebService客户端通过Http的方式请求服务,服务器端可通过配置Http安全域或Filter的方式验证请求 基于SOAP的验证方式 WebService在将验证信息基于SOAP消息中,服务器端通过xfire的Handler获得验证信息,并验证,WebService验证,19,基于SOAP的验证示例: 客户端在发送请求消息时,输出消息通过ClientAuthHandler通道,通道在输出消息的头信息中添加用户验证信息 服务器端在接收WebService请求时,输入消息通过AuthHandler通道,通道通过输入消息的头信息获得用户的验证信息,并执行验证,验证失败时抛出异常。,WebService验证,20,ClientAuthHandler,WebService验证,public class ClientAuthHandler extends AbstractHandler public void invoke(MessageContext ctx) throws Exception /为SOAP Header构造验证信息 org.jdom.Element el = new Element(“header“); /设置头信息 ctx.getOutMessage().setHeader(el); Element auth = new Element(“auth“); Element username = new Element(“username“); username.addContent(“jerry“); Element pwd = new Element(“password“); pwd.addContent(“123“); auth.addContent(username); auth.addContent(pwd); el.addContent(auth); ,21,AuthHandler,WebService验证,public class AuthHandler extends AbstractHandler public void invoke(MessageContext ctx) throws Exception /如果没有头信息直接返回 Element header = ctx.getInMessage().getHeader(); if(header = null) throw new XFireFault(“请求中必需包含验证信息!“, XFireFault.SENDER); /获得验证节点 Element auth = header.getChild(“auth“); if(auth = null) throw new XFireFault(“请求中必需包含验证信息!“, XFireFau
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025物业管理抵押借款合同
- 2025智慧合同管理系统:效率与合规的典范案例
- 2025培训师聘用合同模板
- 2025劳动合同终止协议范本
- 公司财务知识培训主持词课件
- 揭阳空港消防知识培训课件中心
- 技术岗位面试题及答案攻略
- 2025财产委托代管合同范本
- 新媒体人才招募实战模拟面试题集锦
- 全场景面试经验分享:全球百强面试题目的运用与解答
- 彩钢瓦检验批
- 2024-2030年中国大米行业市场深度调研及发展趋势与投资前景研究报告
- 中国近现代史纲要-第七章
- 营销中心岗位职责及流程样本
- 送货单完整模板
- 如何成为一名好的医生
- 消防员考试:消防监控上岗证试题及答案
- 雅安市雨城区2024年重点中学小升初数学入学考试卷含解析
- JBT 9229-2024 剪叉式升降工作平台(正式版)
- 土地出租合同书电子版
- 散热器恒温控制阀规范指引
评论
0/150
提交评论