使用Axis2和JiBX将Java类转换成Web服务,第1部分: 使用XML通过Java类定义Web服务
本文配套源码
简介
Web 服务在日常开发中重要性与日俱增,Axis2 也成为了倍受人们欢迎的开发Web 服务的开放源码平台。Axis2 使用Java 语言编写,它能利用了 JiBX(一种框架,用于将XML和Java绑定在一起)的自由性。假设您有一个含有大量 Java 类和数据结构的 Java 项目,而且不想打乱或者更改它们。JiBX 会帮助您实现这一切,它把在 Axis2 中使用的 XML 数据与 Java 类绑定在一起。这样做的好处是代码易于维护,因为 Web 服务只使用已经开发好、可靠、真正的 Java 类。
本文介绍了将在本系列中使用的 Java 类,并解释了如何生成能准确描述这些 Java 类的 Web 服务描述语言(Web Services Description Language,WSDL)和 JiBX 定义。本系列的第 2 部分将使用 WSDL 和 JiBX XML 文档创建一个 Web 服务的 Java 实现,该 Web 服务使用这个 Java 类作为数据绑定。
系统需求
要学习这个分为两部分的系列文章,需要如下软件:
Axis2,binary and WAR 版,可从 Axis2 主页下载。
JiBX 1.1,可以从 JiBX SourceForge 页面下载。
Geronimo 1.1.1,可以从 Geronimo 主页下载。
下载完上述所有软件后,解压 Geronimo 并键入:java -jar <geronimo-home>/bin/server.jar。
然后,为部署 axis2.war 文件,将 axis2 文件复制到 <geronimo-home>/deploy 目录。
解压 Axis2 二进制文件,将 AXIS2_HOME 环境变量设置为 Axis2 二进制文件解压的目录(本例中设置为 c:\apps\axis2-1.1)。然后解压 JiBX,并将 <jibx-home>/lib 目录的所有 JAR 文件(除了 stax-api.jar 文件之外,因为 Axis2 已经含有了 stax-api.jar 文件)复制到 <axis2-home>/lib 目录下。
这样就设置好了环境
Java 类
这里提供了一些 Java 类,用于构成一个简单的 Web 服务 Java 项目。使用什么样的 Java 类并无大障,您也可以使用自己创建的 Java 类。本文使用的项目含有三个类:OneWayRequest 类、TwoWayRequest 类和 TwoWayResponse 类。按顺序看看每个类,我们先从 OneWayRequest 类开始(参见清单 1)。
清单 1. OneWayRequest Java 类
package com.ibm.devWorks.xml.simpleService;
public class OneWayRequest {
protected String requestData;
public String getRequestData() {
return this.requestData;
}
public void setRequestData(String requestData) {
this.requestData = requestData;
}
}
上面的代码中只含有一个字段,即 requestData,它包含了请求的数据。该类有两个方法:一个用于设置字段值,另一个用于检索字段值。
接下来再看一看清单 2 中的 TwoWayRequest 类。
清单 2. TwoWayRequest Java 类
package com.ibm.devWorks.xml.simpleService;
public class TwoWayRequest {
protected String echoString;
protected boolean booolean;
public boolean getBooolean() {
return this.booolean;
}
public void setBooolean(boolean booolean) {
this.booolean = booolean;
}
public String getEchoString() {
return this.echoString;
}
public void setEchoString(String echoString) {
this.echoString = echoString;
}
}
这个类要稍长一点,它定义了两个字段:一个是 echoString,另一个是 booolean。与第一个类相同,该类为每个字段都定义了一个 getter 和一个 setter 方法。
清单 3 显示了最后一个类,即 TwoWayResponse 类。
清单 3. TwoWayResponse Java 类
package com.ibm.devWorks.xml.simpleService;
public class TwoWayResponse {
protected String echoString;
protected boolean invertedBoolean;
public boolean getInvertedBoolean() {
return this.invertedBoolean;
}
public void setInvertedBoolean(boolean invertedBoolean) {
this.invertedBoolean = invertedBoolean;
}
public String getEchoString() {
return this.echoString;
}
public void setEchoString(String echoString) {
this.echoString = echoString;
}
}
这个类与前一个 TwoWayRequest 类相当类似,不过这是没有必要的。响应类中可能会包含一项数据库记录中的一些数据项。这样,Java 类就完成了! 接下来,我们将介绍用于将这些类作为 Web 服务公开的 WSDL。