XFire 最新兴火指南(上)
发布时间: 2012-06-28 15:20:03 作者: rapoo
XFire 最新生火指南(上)
基于发布在JavaEye的敬畏心情,本文又修改了一遍,与前两天发在blogjava和csdn的版本稍有不同。
1. 概述
???XFire
?是全球众多牛人在与axis系列对比后一致投票的选择。我比较欣赏的特性有:
- ,无须生成一堆文件,无须打包独立war,直接将应用中的Pojo导出为Web服务。
- --超简约的默认Java XML 绑定机制,且可以Plugin其他绑定机制。
- 的POJO WebService配置。
- 。
- 脱离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会被默认生成为,其中ServiceName默认为下文中的接口名。
<servlet>???????<servlet-name>xfireservlet-name>???????<servlet-class>org.codehaus.xfire.spring.XFireSpringServletservlet-class>???servlet>???<servlet-mapping>???????<servlet-name>xfireservlet-name>???????<url-pattern>/service/*url-pattern>??????servlet-mapping>?????<mapping>??
??????????????????<method?name="findBooksByName">??????????????<return-type?componentType="org.springside.bookstore.domain.Book"/>??????????method>??????????????????<property?name="products"?ignore="true"/>??mapping>??</property>?? 其他语法详见Aegis
?参考。
2.4 配置Spring导出
????为了节约配置代码,先配置一个基类。注意导出Web服务的Bean不能lazy-init:
??<import?resource="classpath:org/codehaus/xfire/spring/xfire.xml"/>????<bean?id="baseWebService"?class="org.codehaus.xfire.spring.remoting.XFireExporter"?lazy-init="false"?abstract="true">????<property?name="serviceFactory"?ref="xfire.serviceFactory"/>????<property?name="xfire"?ref="xfire"/>???bean>???</property></property>?每个Web服务的定义:parent为前面定义的基类,serviceClass 为Web Service的接口,serviceBean为Web Service的接口实现类。
<property name="&lt;span"> <property name="&lt;span"><bean?id="bookService"?parent="baseWebService">????<property?name="serviceBean"?ref="bookManager"/>????<property?name="serviceClass"?value="org.springside.bookstore.components.xfire.server.simple.BookService"/>???bean>???
Web服务导出完毕,用户可在http://localhost/service/BookService?WSDL
查看自动生成的WSDL。?
上半章完,关于JSR181,Client API与测试部分请看XFire 生火指南(下)
</property> </property>