XFire 野猪书
如果可以将 XFire Web Services 框架比做一颗
璀璨夺目的钻石的话,那么本书将从这颗钻石的多个
切面上来欣赏它闪耀的光芒。
大约是在去年,我写了一份关于 XFire 开发的
电子文档,介绍了采用 XFire 框架开发 Web Services 的
基本的方法。由于以前的 XFire 官方的文档不很准确,
也不完善,有些实践的代码没有通过,所以在那个文
档没有进行深层次的探讨。陆续有些网友提出了一些
开发的问题,比如参数如果是自定义类型的问题、传
送图片的问题、自动创建代码的问题,很多问题都是
在实际应用 XFire 进行 Web Services 所必须面临的问题。
基于此,我把实际使用 XFire 开发时的一些实践整理出
来,希望能对正在采用和将要采用 XFire 框架进行开发
的朋友有所帮助。
通过本书,你能了解到如何快速的采用 XFire
开发一个 Web Service,如何根据一个 WSDL 文件生成
服务器端和客户端代码,如何在一个桌面应用程序嵌
入 Web Services,本书也演示了采用三行代码就完成调
用一个 Web Service 的过程。本书介绍了如何采用
Aegis、jaxb2、xmlbeans、Castor、JiBX、MessageBindi
ng 等多种 Binding 方式将 XML 映射到 JAVA 对象上。
最后本书介绍了 XFire 的身份验证方式、与 Spring 容器
的继承以及 XFire 对 MTOM 支持。
显然,本书不是 XFire 的用户手册,也不是官
方的用户指南,而是根据开发过程中总结的一些实践
文档,并不能涵盖 XFire 的方方面面。XFire 最权威也
最翔实的文档毫无疑问是官方的 Wiki,尤其是 Wiki 上
的 User's Guide。
晁岳攀
smallnest@gmail.com
关注濒危动物,热爱大自然
世界体型最小、最罕见的「侏儒
猪」一度濒临绝种,体长约 30 公
分,体重不到 10 公斤。
内容目录
XFire 开发起步.......................................................1
嵌入 XFire 服务....................................................13
JSR181...................................................................19
Aegis 绑定..............................................................28
JAXB2 绑定(基于代码)........................................39
JAXB2 绑定(基于 schema)...................................43
XMLBeans 绑定....................................................47
Castor 绑定............................................................52
JiBX 绑定..............................................................58
MessageBinding....................................................64
身份验证................................................................65
Spring 集成............................................................69
MTOM...................................................................78
后记........................................................................83
你可以自由的收藏、打印,传播本文档,未经作者许可,不得将本书中内容用做盈利之目的
XFire 开发起步
XFire 开发起步
本章的内容包括:
➢ Xfire 介绍
➢ 一个简单的 Web Service
➢ 发布一个 Web Service
➢ 编写客户端的代码
XFire 是下一代的 java SOAP 框架。XFire 提供了非常方便的 API,使用
这些 API 可以开发面向服务(SOA)的程序。它支持各种标准,性能优良(基
于低内存的 STAX 模型)。
• 支持多个重要的 Web Service 标准,包括 SOAP、WSDL、WS-I Basic Profile、WS-
Addressing、WS-Security 等
• 高性能的 SOAP 栈
• 可选的绑定(binding)方式,如 POJO、XMLBeansJAXB1.1、JAXB2.0、Castor 和 JiBX
等
• 支持 JSR181 API
• 多种传输方式,如 HTTP、JMS、XMPP、In-JVM 等
• 灵活的接口
• 支持多个容器,如 Spring、Pico、Plexus、Loom
• 支持 JBI,参看 servicemix 项目(http://servicemix.org)
• 客户端和服务器代码生成
本书中对 Web 服务泛指时,通常以 Web Services(复数形式)来表示,
针对某个特定的 Web 服务,以 Web Service(单数形式)来表示。
1
1
XFire 开发起步
在准备第一个例子前,先把本书所用到的软件及版本说明一下。XFire 不同的版本会
有些差别,建议下载最新的 XFire 版本。
操作系统
Fedora Core 6,Linux 内核版本为 2.6.18-1.2798。当然你可以选择 Windows。
开发工具
Eclipse3.2.0 + sysdeo tomcat插件
Web 服务器
tomcat 6.0.10
XFire 1.2.5
你可以到官方网站下载 xfire-distribution-1.2.5.zip,下载到本地解压后可以得到 XFire
编译打包后的文件 xfire-all-1.2.5.jar,lib 目录下为 XFire 所依赖的第三方的 Jar 文件,你开发
的时候会用得着。此外还包括手册和几个例子。建议在 Eclipse 里建一个用户库,把 xfire-all-
1.2.5.jar 和第三方的 Jar 文件都包含进去,因为下面几章的开发都会用到这个库。
第一个 Web Service 程序
(
本书附带的源代码
facet0)
OK,可以开始编写你第一个 Web Service 程序了。
首先在 Eclipse 下建立一个 Tomcat 工程,名字叫 facet0,web应用程序的上下文(context)
为 facet。(实际开发时工程名和上下文你可以随意命名,只要保证和下面的访问的地址一致
即可,下面每个章节的相关的命名都可以自己命名,不再赘述,免得唐僧)。
在 WEB-INF 文件夹下新建一个 web.xml 文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>XFireServlet</servlet-name>
2
XFire 开发起步
<display-name>XFire Servlet</display-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
</web-app>
在这个 web.xml 文件中定义了一个 XfireServlet,它负责提供 Web Services,并提供
每个 Web Service 的 WSDL。如果你发布了一个 Web Service,比如叫 BookService,你
就可以通过网址 http://<server_url[:port]>/<context>/ services/BookService 来访问这
个 Web Service,并且通过网址 http://<server_url[:port]>/<context>/
services/BookService?WSDL 得到这个 Web Service 的 WSDL 信息。
在源文件夹 WEB-INF/src 下新建一个 package:
com.googlepages.smallnest.facet,在这个 package 下新建一个接口 HelloService,这个接
口定义了只定义了一个 hello 方法。这个方法要求传入一个字符串的参数,记过处理后返回
另一个字符串,非常的简单。
package com.googlepages.smallnest.facet;
public interface HelloService
{
public String hello(String name);
}
3
- 1
- 2
前往页