`
江南白衣
  • 浏览: 550880 次
  • 来自: 广州
社区版块
存档分类
最新评论

XFire 最新生火指南(上)

阅读更多

 

本文来自SpringSide WIki,请留意Wiki上的最新版本

基于发布在JavaEye的敬畏心情,本文又修改了一遍,与前两天发在blogjava和csdn的版本稍有不同。

1. 概述

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

  1. 与Spring整合,无须生成一堆文件,无须打包独立war,直接将应用中的Pojo导出为Web服务。
  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有了自己的Servlet,不再依赖Spring MVC的DispatchServlet,也就远离了大家不熟悉的Spring MVC URL Mapping,与Spring达致完美的整合。

   这里指定了路径为/service/* ,即WebService的URL会被默认生成为http://www.xxx.com/yyy/service/BookServiceservice/ServiceName,其中ServiceName默认为下文中的接口名。

xml 代码
  1. <servlet>  
  2.      <servlet-name>xfireservlet-name>  
  3.      <servlet-class>org.codehaus.xfire.spring.XFireSpringServletservlet-class>  
  4.  servlet>  
  5.  <servlet-mapping>  
  6.      <servlet-name>xfireservlet-name>  
  7.      <url-pattern>/service/*url-pattern>  
  8.     servlet-mapping>     
   如果应用使用了Hibernate,使用了OpenSessionInView Filter,注意配置OSIV Filter Filter覆盖xfire servlet的路径,即本例中的/service/*.

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

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

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

public interface BookService {
   List<book></book> findBooksByCategory(String cateoryId);
}

 2.3 配置Java-XML Binding

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

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

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

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

<property class="code-quote" name="&amp;lt;span">
  1. <mapping>  
  2.         <!---->  
  3.         <method name="findBooksByName">  
  4.             <return-type componentType="org.springside.bookstore.domain.Book"/>  
  5.         method>  
  6.        <!---->  
  7.        <property name="products" ignore="true"/>  
  8. mapping>  
</property>

   其他语法详见Aegis 参考。

2.4 配置Spring导出

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

<!----><property class="code-quote" name="&amp;lt;span"><property class="code-quote" name="&amp;lt;span">
xml 代码
  1. <!---->  
  2. <import resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>  
  3.   
  4. <bean id="baseWebService" class="org.codehaus.xfire.spring.remoting.XFireExporter" lazy-init="false" abstract="true">  
  5.   <property name="serviceFactory" ref="xfire.serviceFactory"/>  
  6.   <property name="xfire" ref="xfire"/>  
  7.  bean>  
 </property></property>

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

<property class="code-quote" name="&amp;lt;span"> <property class="code-quote" name="&amp;lt;span">
xml 代码
分享到:
评论
6 楼 spinach 2007-04-18  
学习
期待下文
5 楼 dengtl 2007-04-18  
支持一下!
另外原文中:“如果能写成List findBooks()就也不需要了。”有误!
应该为“如果能写成List<org.springside.bookstore.domain.Book> findBooks()就也不需要了。”
4 楼 lzzzl 2006-12-01  
同感,WEB中如果滚动窗口中的滚动窗口过多,无疑是失败的UI设计,感觉非常滑稽
3 楼 Nirvana 2006-11-29  
这个滚动条拉的实在难过!!!
对于javaEye的这个新功能实在不敢恭维。
2 楼 heweiya 2006-11-28  
最近也在使用web service,是引用.net的dataset对象生成的web service,因为我们的编译环境是jdk1.4,所以选择了axis使用stub方式进行接受服务(取得dataset为对象的XML文件,然后使用dom4j来解析XML文件当中的数据)的,
最新的xfire版本利用stub也可以生成WSDL2JAVA,但是默认生成的方式是JDK1.5的Annotation方式,懒得改代码,故且使用axis,但是使用起来比xfire哆嗦一些。
1 楼 lighter 2006-11-27  
感觉白衣起的文章名称好酷:"最新生火指南","侵入,无侵入? Annotation vs Interface","幼学琼琳","小军刀 "之类的.

相关推荐

    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 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项目的最终或最优化的版本,它提供了...

    XFire创建的WebService

    部署后,服务将在指定的端点上可用,等待客户端的请求。 5. **测试和消费服务**:可以使用SOAP UI或其他工具测试Web服务,验证其功能是否正常。对于其他Java应用或任何支持SOAP的客户端,都可以通过调用服务的URL来...

Global site tag (gtag.js) - Google Analytics