WebService是目前使 用最广、功能最全、标准化程度最高的远程技术,包含服务提供者,服务调用者,服务代理(UDDI)三个角色,其中服务提供者负责开发一些特定的服务,并在UDDI中注册,方便其他服务调用者发现和使用该服务,服务代理对外提供服务的注册和服务查询的功能 ...一、综述WebService是目前使用最广、功能最全、标准化程度最高的远程技术,包含服务提供者,服务调用者,服务代理(UDDI)三个角色,其中服务提供者负责开发一些特定的服务,并在UDDI中注册,方便其他服务调用者发现和使用该服务,服务代理对外提供服务的注册和服务查询的功能,服务调用者则是服务的消费者,可以从UDDI中查询需要的服务的wsdl地址,并通过wsdl调用该服务,获取服务返回结果,整个服务的通信过程是通过SOPA协议来完成的,WebService中各角色之间的关系请参照图1所示:图1 WebService原理XFire是目前较为流行的WebService框架,为Spring提供很好的支持,这使得我们可以很容易在Spring中使用XFire构建WebService应用,接下来将对Xfire的关键技术做一些介绍。二、关键技术介绍XFire通过调用ServiceFactory将一个POJO转化成为一个可以被调用的Service,而且还可以通过Handler定义SOAP发送和接收之前的各种加工处理逻辑,例如对SOAP体或者SOAP头的内容进行加工处理。1、XFire的数据传输机制XFire是基于流数据处理进行工作的系统,它以管道的方式接收SOAP流数据,具体参照图2所示:图2 XFire处理SOAP消息的流程请求调用:调用者发出调用请求后需要经过传输(Transport)、预转发(PreDispatch)、转发(Dispatch)、策略实施(Policy)、用户信息处理(User)、预调用(PreInvoke)、服务调用(ServiceInvocation)等阶段。响应请求:XFire生成响应SOAP消息并通过管道发送给客户端请求者,这一过程会先后经历调用后(PostInvoke)、用户信息处理(User)、策略实施(Policy)、传输(Transport)四个阶段。由于这种方式不需要将SOAP的整个文档缓存在内存中,不仅带来了可观的性能回报,还节省了内存的占用率。2、XFire的安全方案 XFire通过Apache的WSS4J对WS-Security(Web服务安全)提供支持,WS-Security是一种提供在Web服务上应用安全的方法的网络传输协议,包含了关于如何在Web服务消息上保证完整性和机密性的规约。XFire通过Handler实施WSS4J,当发送SOAP报文时,通过注册一系列OutHandler,对SOAP报文进行加密、签名、添加用户身份信息等后置处理操作。而在接收SOAP报文时,则通过注册一系列的InHandler对SOAP进行解密、验证签名,用户身份认证等前置操作。请求和响应的SOAP在发送之前可以通过注册的OutHanlder进行加工处理,让SOAP转换为WS-Security的保护格式。而服务端和客户端在接收SOAP报文之前,可以通过注册的InHandler,将WS-Security格式的SOAP转换为正常的SOAP进行处理。三、XFire中传输复杂类型XFire通过ServiceFactory将一个POJO转化为一个service时如果输入输出参数为简单类型如String,int,long等基本类型组成时无须进行额外的映射设置,但是对于复杂类型的输入输出参数时XFire会默认通过Aegis绑定将其序列化。假设存在一个类UserINfo包含一个ArrayList的属性roleList,使用Aegis对该类进行其绑定的方法:首先:建一个UserInfo.aegis.xml的文件接着:在xml文件中添加对roleList的配置如:<propertyname="roleList" componentType="com.domain.Role"/>XFire1.2.6工作在Java5上时支持的类型包括:基本类型:int, double, float, long,byte[], short, String, BigDecimal(直接解析) |
Java enum 类型(直接解析) |
Arrays<泛型> |
Collections<泛型> |
仅包含java的基本类型的javaBean |
时间类型:java.util.Date,java.util.Calendar, java.sql.Timestamp, java.sql.Date,java.sql.Time |
XML类型:org.w3c.dom.Docmument, org.jdom.Element, XMLStreamReader,Source |
四、总结1)由于alibaba枚举不是单纯的javaEnum,XFire传输时需要在客户端和服务端进行注册。服务器端和客户端配置如图3,4所示:
图3 alibaba枚举服务器端的配置图 4 alibaba枚举客户端的配置2)Map泛型需要解析map中类型,如果类型是自定义的,则需要Aegis绑定,建一个*.aegis.xml文件,并在该文件中指定自定义类型。3)抽象类:不能传递抽象类,必须在传递的过程中实例化对象。
爱华网本文地址 » http://www.aihuau.com/a/25101017/350990.html
更多阅读
通过接近一个星期的学习,慢慢的又恢复了学习的感觉,作为办公软件虽然在大学期间没有经过专门的学习,但还是有所接触,用得最多的还是Word文档,Execl用的是最少的了,因为平时基本没有用到它。说用到Word文档其实基本上也只是粘贴,复制文章以
新常态、新思想、新动力圆好德江区域性教育中心梦非常感谢县委组织部和县委党校的关怀,我有幸参加了德江县2014年秋季科干班培训学习。整个培训学习过程中,我以饱满的政治热情、端正的学习态度、严格的组织纪律和良好的学习方式,积极
我对医学一直很感兴趣,希望通过了解和学习身体、疾病等方面的医学知识和内容,可以帮助自己、家人和朋友们拥有健康的身体。为此,我看了不少的书、参加了不少的专家讲座和培训,虽然也收获了一些医学知识和技巧,但是我最大的感受是既没有学
本次信息技术与课程整合培训采用远程学习的方式,学习时间比较自由宽松,在学习过程中跟随各模块的学习目标和活动展开学习,为学习提供宽松的环境和自主发挥的空间,在学习过程中不断的计划、不断地修改设计内容,逐步完善探究内容,结合自己的
在不少会计学员看来,会计课程的学习比较单调,整天都在和会计分录以及公式计算打交道,知识点非常琐碎,一般中有特殊,特殊中还有特殊,苦于没有好的方法去记忆和理解会计核算的规律。应该说“书山有路勤为径,学海无涯苦作舟”,会计学习必须依勤