技术开发 频道

使用 XMLBeans 在 Apache Geronimo 中部署 SOA 应用程序

【IT168 技术文章】

    对 XMLBeans 好奇吗?这种高级易用的 XML-Java 绑定技术允许您像访问任何 Java? 对象或 JavaBean 一样访问 XML 文件。本文将阐明有关 XMLBeans 技术的更多内容,包括它如何与 Apache Geronimo 一起使用以及如何简化和流化面向服务架构 (SOA) 开发。
XMLBeans 技术允许您像使用 JavaBean 一样使用 XML 结构。使用类似 XMLBeans 的工具可以降低服务所需的开发和测试时间,简化 SOA 开发,从而增加服务交付的敏捷性。

    本文使用 Apache Geronimo 作为您编写的 XMLBeans 的开发容器(但可以使用任何服务器)。本文假设您过去使用过 XML 并熟悉 XML 模式、XQuery、XPath 等概念。即使您不是专家也不用担心,因为 XMLBeans 隐藏了这些技术的复杂性。

    XMLBeans 是什么?

    XMLBeans 由 BEA 引入作为其 WebLogic Workshop 产品的一部分。2003 年 9 月,BEA 将 Page Flow、XMLBeans 和其他技术捐赠给开放源码社区。两个随之启动的项目是 Apache Beehive 和 Apache XMLBeans。

    可以将 XMLBeans 看作对象-关系 (OR) 映射器,但这是针对 XML 文件而非关系数据库而言的。XMLBeans 允许您像访问任何 Java 对象或 JavaBean 一样访问 XML 文件。也就是说,它是一个 XML-Java 绑定工具。

    Castor 和 Java Architecture for XML Binding (JAXB) 是执行类似 XML-Java 绑定的其他有名的技术。Castor 是一种有趣的技术:除了 XML-Java 数据绑定之外,它还提供类似典型 OR 映射工具的 Java-SQL 绑定。Castor 还支持运行时自省能力;它尝试将 XML 的元素和属性与 Java 类的类和字段相匹配。JAXB 是来自 Sun 的技术,提供一些基本能力。

    过去,当评估 OR 工具时,最不可能考虑的是该工具是否可以用 XML 表示对象。今天,随着 SOA 成为潮流,这已经成为评估此类工具时最重要的标准。XMLBeans 技术虽然是最新的,但也可能是较高级的 XML-Java 绑定技术。经验表明,它最易使用,并提供最好的特性和性能。(对 XML-Java 绑定技术的详细比较超出了本文范围。)

    图 1 演示了 XMLBean 的行为。在底层,XML 文件始终与 bean 表示保持同步。如果具有符合某个 XML 模式的文件,则可以使用 getter 和 setter 操作该文件,正如在 JavaBean 中所做的一样。XML 文档被当作一级数据对象 对待(这意味着它们可以被无限制地使用),以类似 JavaBean 的方式被访问。

    图 1. XML-Java 绑定

 
    下面是一个例子。假设您具有一个 XML 模式和与之对应的 XML 文件,该文件表示一本书。该文件包含一个叫做 Author 的元素,该元素与 book 具有一对多的关系。这是因为一本书可以具有多个作者,如 清单 1 所示。
清单 1. book 对象的 XML 文件

    使用 XMLBeans 处理该文件时,相应的 Java 类维护该关系。 清单 2 展示了一些伪 Java 代码,以处理由该 XML 文件产生的 XMLBean。

    清单 2. 处理 XMLBean 的伪 Java 代码


    XMLBeans 和 SOA 开发

    很容易推知 XMLBeans 如何与基于 SOA 的开发相关。XML 位于大多数 SOA 技术的核心,不管它们是否使用 Web 服务。即使假设 SOA 等同于 Web 服务(不用争论这个问题,目前本来就是这样),作为致力于 SOA 项目的开发人员,您无疑要使用 XML。您可能具有这样的实践经验,即利用 XML 解析器操作 XML 内容,然后将 XML 文件手动转换为更易操作的对象结构。您可能解析过 XML 并在这些文件中查找特定数据。或者您可能将一种 XML 结构转换为另一种。XMLBeans 解决了 SOA 世界中的这个问题:它为您挑起重担,而您可以专注于编写 Web 服务或其他 SOA 服务。

    使用 SOA 或 Web 服务时,不用编写应用服务器或 XML 解析器。相反,使用供应商构建的或作为开放源码提供的一种技术,这种技术被广泛采用和测试,且遵循自己的生命周期。那么为什么要编写和管理代码来将 XML 转换为 Java 对象呢?使用 XMLBeans 有助于缩短服务的开发和测试时间,从而让您在服务交付时更敏捷。

0
相关文章