`
ihuashao
  • 浏览: 4663974 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

XFire 最新生火指南(上)

阅读更多

作者:江南白衣

本文来自SpringSide WIki,请留意Wiki上的最新版本。(wiki于11.27更新)。

1. 概述

XFire 是全球众多牛人在与axis系列对比后一致投票的选择。我比较欣赏的特性有:

  1. 与Spring整合,无须生成一堆文件,无须打包独立war,直接将应用中的Pojo导出为服务。
  2. Aegis--超简约的默认Java XML 绑定机制,且可以Plugin其他绑定机制。
  3. JSR181--annotatiton驱动的POJO WebService配置。
  4. 基于Stax的高性能框架
  5. 脱离Web服务器的单元测试能力。

网上的文档与例子总是不新,大家抛开所有的文档,所有的Axis习惯,单看这份代表XFire1.2.2最简约做法的文档。

2. 生火指南

2.1 修改web.xml,在Web应用中增加XFire的入口

xfire的入口,注意XFire有了自己的Servlet,不再依赖Spring MVC的Servlet,也就远离了大家不熟悉的Spring MVC URL Mapping,与Spring达致完美的整合。

这里指定了路径为/service/* ,即WebService的URL会被默认生成为http://www.springside.org.cn/bookstore/service/BookService,其中BookService默认为2.2中的接口名。

<servlet>
<servlet-name>xfire</servlet-name>
<servlet-class>org.codehaus.xfire.spring.XFireSpringServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>xfire</servlet-name>
<url-pattern>/service/*</url-pattern>
</servlet-mapping>

2.2 编写窄接口,抽取POJO中要导出的服务

从已有的BookManager.java中,抽取出一个窄接口,仅暴露需要导出为Web Service的方法。而BookManger.java是POJO,不需要任何WebService相关代码。

窄接口一方面满足了安全要求,不用整个BookManager所有方法导出为Web Service;另一方面,XFire暂时也只支持基于接口的Proxy。

publicinterfaceBookService{
List
<Book>findBooksByCategory(StringcateoryId);
}

2.3 配置Java-XML Binding

XFire默认的Aegis Binding语法非常简单,在SpringSide的例子里几乎一行配置都不用写,是我见过最简单的binding定义,大大优于其他以设计复杂为终极目标的方案。

对象的属性、函数的参数和返回值如果为int、String、Date等普通类型以及由普通类型组成的复杂对象都无需定义。我见到只有两种情况需要定义:

  • 无法使用泛型定义Collection中元素的类型时--如List findBooks()。如果能写成List<Book> findBooks()就也不需要了。
  • 需要为属性定义不同的名字,或者定义复杂对象里的某些属性不要输出。

XFire以约定俗成代替配置,如果万一真的需要aegis配置,所有Service和Entity Bean的binding文件要求命名为xxx.aegis.xml,而且要和原来的类sit together在同一目录里。

<mapping>
<!--配置findBooksByName服务的返回值,List内对象为Book-->
<methodname="findBooksByName">
<return-typecomponentType="org.springside.bookstore.domain.Book"/>
</method>
<!--配置Category类,忽略内嵌的products属性不要输出XML-->
<propertyname="products"ignore="true"/>
</mapping>

其他语法详见Aegis参考。

2.4 配置Spring导出

为了节约代码,配置一个基类,注意导出的服务不能lazy-init:

<!--导入XFire基本配置文件-->
<importresource="classpath:org/codehaus/xfire/spring/xfire.xml"/>

<beanid="baseWebService"class="org.codehaus.xfire.spring.remoting.XFireExporter"lazy-init="false"
abstract
="true">
<propertyname="serviceFactory"ref="xfire.serviceFactory"/>
<propertyname="xfire"ref="xfire"/>
</bean>

每个Web服务的定义:parent为基类,serviceClass property设置Web Service的接口,serviceBean property设置Web Service的实现类。

<beanid="bookService"parent="baseWebService">
<propertyname="serviceBean"ref="bookManager"/>
<propertyname="serviceClass"value="org.springside.bookstore.components.xfire.server.simple.BookService"/>
</bean>

Web服务导出完毕,用户可在http://localhost/service/BookService?WSDL查看自动生成的WSDL。

上半章完,关于JSR181,Client API与测试部分请看XFire 生火指南(下)

<!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/"> <rdf:Description rdf:about="http://wiki.springside.org.cn/display/springside/XFire" dc:identifier="http://wiki.springside.org.cn/display/springside/XFire" dc:title="XFire" trackback:ping="http://wiki.springside.org.cn/rpc/trackback/287" /> </rdf:RDF> --><!-- Root decorator: all decisions about how a page is to be decorated via the inline decoration begins here. --><!-- Switch based upon the context. However, for now, just delegate to a decorator identified directly by the context. -->
分享到:
评论

相关推荐

    xfire 开发指南

    xfire开发指南 xfire开发指南 xfire开发指南

    Web Service XFire框架开发指南

    **Web Service XFire框架开发指南** Web Service是一种基于开放标准(如XML、WSDL和SOAP)的互联网通信协议,允许不同系统之间的应用程序进行交互。XFire是Java平台上的一个开源Web Service框架,它提供了一种简单...

    XFire开发指南第二版

    该书的第二版针对XFire的最新版本进行了全面更新,旨在帮助开发者更高效、更灵活地利用XFire来开发分布式应用程序。 首先,本书详细介绍了XFire的核心概念,包括服务的创建、部署和调用。服务是XFire的基本单元,...

    WebService XFire开发指南

    【WebService XFire开发指南】 在IT行业中,WebService是一种基于开放标准(如SOAP、WSDL和UDDI)的协议,允许不同系统之间的应用程序通过互联网进行通信。它提供了一种松散耦合的方式,使得分布式系统可以共享数据...

    xfire开发指南,及与spring集成

    里面包括了3个PDF文档 1:Xfire-野猪书-开发指南 2:xfiretutorial 3:xfire-spring 为你的工程提供一个更好的远程服务,做好数据交换第一步 XFire是当前J2EE领域非常流行的Web Service框架,以其卓越的...

    XFire开发指南.rar

    **XFire开发指南** XFire,作为下一代Java SOAP框架,为开发者提供了一种高效、便捷的方式来构建面向服务架构(Service-Oriented Architecture, SOA)的应用程序。在深入探讨XFire之前,我们先来理解一下SOAP...

    Xfire WebService框架搭建指南

    本指南将详细介绍如何利用Xfire搭建服务器端和客户端,以便于理解并掌握其核心功能。 ### 一、服务器端搭建 1. **创建Web项目** 由于Web服务是基于网络的,服务器端需要是Java Web项目。首先,我们需要创建一个新...

    xfire

    压缩包中的"wsbook"可能是xfire相关文档或教程的集合,可能包含了关于xfire的API文档、开发指南、或者是用户手册等内容。这些文档对于想要基于xfire进行二次开发或者了解xfire工作原理的人来说是非常宝贵的资源。 ...

    XFire开发指南,很详细的书

    ### XFire开发指南知识点概述 #### 一、XFire简介 - **定义**: XFire是一个高性能的Java SOAP框架,用于构建面向服务架构(SOA)的应用程序。 - **特点**: - 支持多种标准:如SOAP、WSDL、WS-I Basic Profile、WS-...

    WebService-xfire和axis开发指南

    XFire是Java平台上的一个轻量级、高性能的WebService框架,由Codehaus组织开发。XFire提供了一种简单的方式来创建和消费WebServices。其主要特性包括: 1. **易于使用**:XFire通过简单的API和注解,让开发者能够...

    xfire依赖jar包

    2. **xfire-aegis**: Aegis绑定器是xfire的一个组件,它允许直接在Java对象上进行SOAP绑定,无需编写额外的接口或类。Aegis使用了XFire的代码生成器,可以自动生成WSDL(Web服务描述语言)文档。 3. **xfire-...

    xfire-all-1.2.6 xfire所需的全部包

    综上所述,Xfire 1.2.6不仅是一个通讯工具,更是一个游戏世界的社交中心。它通过强大的游戏集成、即时通讯和丰富的社区功能,塑造了一个独特的游戏社交环境。虽然时代变迁,但Xfire 1.2.6的精髓仍值得我们回味和学习...

    xfire开发指南.......

    ### XFire开发指南知识点概述 #### 一、XFire简介 - **定义**: XFire是一个高性能的Java SOAP框架,用于构建面向服务架构(SOA)的应用程序。 - **特性**: - 支持多种标准:如SOAP、WSDL、WS-I Basic Profile、WS-...

    xfire所有jar包

    activation.jar commons-logging.jar jdom-1.0.jar spring.jar spring-mock.jar stax-api-1.0.1.jar stax-utils-snapshot-20040917.jar wsdl4j-1.5.2.jar wstx-asl-3.0.1.jar ...xfire-xmlbeans-1.2.2.jar

    Xfire API,Xfire帮助文档

    Web服务是互联网上的应用程序接口,它们允许不同系统之间的数据交换。Xfire API 作为一个Web服务,使用HTTP协议进行通信,这使得它可以在不同的操作系统和编程语言之间无缝工作。常见的Web服务技术包括SOAP(简单...

    Xfire-v1.99 XFire最高版本

    **XFire v1.99:WebService开发框架详解** XFire,全称为XFire Integration Library,是一个基于Java的开源框架,专门用于构建和部署Web服务。这个“XFire最高版本”指的是XFire项目的最终或最优化的版本,它提供了...

Global site tag (gtag.js) - Google Analytics