webserviece XFire

 

 

1. XFire简介

XFire是与Axis 2并列的新一代Web Service框架,通过提供简单的API支持Web Service各项标准协议,帮助你方便快速地开发Web Service应用。XFixe内建在STAX的基础上之上,STAX是基于流的XML解析引擎,这使得XFire拥有很高的性能。

相对Axis来说,目前它的人气指数相当高,加上其提供了和String集成的支持,在目前的Web Service开源社区拥有众多的追随者,XFire被多个开源项目所使用。XFire为Spring提供了支持,这使得我们可以很容易在Spring中 使用XFire构建Web Service应用。本文讲述了如何使用XFire在Spring中开发Web Service的具体过程。

XFire特性

XFire是Web Service框架的后起之秀,它从现有的框架中借鉴了许多优秀的理念,力争将Web Service的应用开发难度降到最低。此外,还提供了各种绑定技术、支持多种传输协议,对Web Service体系中许多新的规范提供了支持。简单来说,它具有以下一些特性:

·         支持重要的Web Service规范,如SOAP、WSDL、WS-I Basic Profile,、WS-Addressing、WS-Security等;

·         高性能的SOAP 栈设计;

·         可插拔的绑定,支持POJO、XMLBeans、JAXB1.1、JAXB2以及Castor;

·         支持JSR 181规范,该规范通过JDK 5.0注解将POJO导出为Web Service;

·         支持多种传输协议:HTTP、JMS、XMPP、In-JVM等,其中In-JVM允许我们在不启动Web应用器的情况下,象一般的程序一样测试Web Service应用;

·         易用的API,XFire API简洁明了,便于使用;

·         支持Spring、Pico、Plexus、Loom等容器;

·         支持JBI(Java Business Integration:Java 业务整合)规范,JBI是JSR 208的实现;

·         能够根据WSDL创建客户端和服务器端的存根代码;

率先对JAX-WS提供了支持,JAX-WS是JAX-RPC的替代者。

在架构上可以把XFire大概分为 Service, Transport 和 Invoker 三个层面。
Service 层是 XFire 架构的静态基础,负责完成对服务的注册及其管理。核心的 ServiceRegistry 接口完成对服务自身的生命期管理,如注册/注销/获取等等;而 ServiceFactory 接口则负责从具体的 POJO 类型,生成实现 Service接口的可被管理的服务代理。
Transport 层则是 XFire 的外部 IO 处理系统。由 TransportManager 接口对具体的 Transport 接口实现进行管理,默认提供了基于 pipe 的 LocalTransport 和基于 Http 协议的 SoapHttpTransport。理论上可以任意进行扩展,例如 XFire 发布包中还提供了基于 JMS 和 XMPP 的实现。
Invoker 则是 XFire 的动态调用层,负责在 Transport 层接受到请求后,解析内容、调用合适服务并最终返回 SOAP 封包给调用者。运行时 Invoker 负责维系 Service 和 Transport 之间的联系。

因此一个服务的生成和注册往往类似如下代码:

[code]Service endpoint = serviceFactory.create(clazz);// 根据具体类型创建服务

XFire.getServiceRegistry().register(endpoint);// 向服务管理注册服务
endpoint.setInvoker(new BeanInvoker(bean));// 设定服务调用模式
[/code]

最基本的XFire 接口,实际上就是 getServiceRegistry()和getTransportManager() 的封装。

XFire 中另一块核心的思想,就是其灵活而强大的 binding 机制,负责完成 Java 类型与 SOAP 消息的双向转换。XFire仅仅内建就支持 POJO(Aegis), Castor,JAXB 1.1, JAXB 2.0 和 XMLBeans 多种模式,你可以根据需求选择从全自动POJO生成,到全手工 xsd 文件定义的不同方式。

 

使用XFire开发Web服务的基本步骤


1、检验Java类的方法和构造函数是公共的(public)。

2、将XFire Servlet相关的入口添加到web.xml中。

3、创建services.xml并把它放到WEB-INF/classes/META-INF/XFire目录下。

4、将XFire和其他第三方库添加到你的Web应用的WEB-INF/lib 目录下。

 

在管道中以流方式处理SOAP

XFire是完全基于流数据处理进行工作的系统,这意味着XFire不是将整个SOAP文档缓存在内存中,而是以管道的方式接收SOAP流数据。这种工作方式的转变带来了可观的性能回报,同时节省了内存的占用。

对于习惯了Axis、GLUE等这些基于DOM处理模型Web Service框架的开发者来说,需要一些时间来适应这种转变。

XFire从管道中接收一个SOAP请求到返回一个SOAP响应,会经历一系列的阶段。在管道调用的任何一个阶段,XFire都可以添加一些额外的 Handler,在对消息进行加工处理后再传入到下一个阶段中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值