XFire 是codeHaus 组织提供的一个开源框架,它构建了POJO 和 SOA 之间的桥梁,主要特性就是支持将 POJO 通过非常简单的方式发布成 Web 服务,这种处理方式不仅充分发挥了 POJO 的作用,简化了 Java 应用转化为 Web 服务的步骤和过程,也直接降低了 SOA 的实现难度,为企业转向 SOA 架构提供了一种简单可行的方式。
XFire 目前最新的版本是 1.2.6,目前支持的特性主要有:
l Support for important Web Service standards - SOAP, WSDL, WS-I Basic Profile, WS-Addressing, WS-Security, etc.
l High performance SOAP Stack Pluggable bindings POJOs, XMLBeans, JAXB 1.1, JAXB 2.0, and Castor support
l JSR 181 API to configure services via Java 5 and 1.4 (Commons attributes JSR 181 syntax)
l Support for many different transports - HTTP, JMS, XMPP, In-JVM, etc.
l Embeddable and Intuitive API
l Spring, Pico, Plexus, and Loom support.
l JBI Support
l Client and server stub generation
l JAX-WS early access support
1. XFire之下载
XFire 的官网是XFire.codehaus.org,进入主页后,在右侧找到Download链接,点击进入下载页面。最新版本1.2.6下有四个链接,选择第一个xfire-distribution-1.2.6.zip下载。
下载解压后的目录结构如下
各目录和文件对应的说明如下:
(1) api : XFire类库的api文档
(2) examples : XFire示例源码
(3) lib : XFire所依赖的jar包,不必导入所有,根据项目需要取舍
(4) manual : XFire帮助文档
(5) modules : 根据XFire不同特性而分的不同jar包
(6) xfire-all-1.2.6.jar: XFire完整jar包
2. XFire之HelloWorld
以下用XFire做一个简单的HelloWorld示例。详细步骤如下:
1) 新建一web工程,命名为xfire;
2) 将XFire下载解压后的xfire-all-1.2.6.jar包和lib下所有的jar包copy到工程的lib目录下,同时在网上单独下载一个xalan包。如果大家以前做项目用过xalan包,也可直接copy过来。
3) 在web.xml中加入:
4) 新增一个接口和接口的实现类:
接口代码如下:
接口实现类如下:
5) 在src下新建一名称为META-INF的Folder,再在META-INF下新建名称为xfire的Folder,最后在xfire下新建services.xml文件,services.xml文件内容如下:
services.xml的各标签作用如下:
service: service标签和它所包含的xml内容为发布成 Web 服务的 POJO 提供完整的描述。
name: Web服务被发布时所采用的唯一名称。
namespace: Web 服务发布时所使用的命名空间。
serviceClass: Web 服务接口类的全名,包括包名和类名。
implemetationClass: Web 服务实现类的全名,包括包名和类名。
6) 在浏览器的url栏里输入
http://localhost:9999/xfire/services/HelloWorldService?wsdl,如果一切正常,则会返回如下页面:
说明:这里用的是tomcat服务器,若未安装,请自行安装一下。
3. XFire之客户端的生成
客户端生成方式有好几种,在此只列两种方式:一种是通过WSDL创建一个动态的客户端,另一种是使用ANT工具通过WSDL生成一个客户端。以下是两种方式的具体应用介绍。
1) 动态客户端
此种方式只需知道wsdl地址,方法名和方法需用要的参数就可以了。
2) Ant生成客户端
新建一Java工程,在工程下新建一名称为com的包,再在工程的根目录下新建build.xml, build.xml文件的具体内容如下:
最后执行Ant build,执行成功后,新建一HelloWorldTest类,具体内容如下:
参考资料:
1. XFire 的官方资料
2. 肖菁:XFire 入门
http://www.ibm.com/developerworks/cn/java/j-lo-XFire/