对 XMLBeans 好奇吗?这种高级易用的 XML-Java 绑定技术允许您像访问任何 Java™ 对象或 JavaBean 一样访问 XML 文件。本文将阐明有关 XMLBeans 技术的更多内容,包括它如何与 Apache Geronimo 一起使用以及如何简化和流化面向服务架构 (SOA) 开发。
XMLBeans 技术允许您像使用 JavaBean 一样使用 XML 结构。使用类似 XMLBeans 的工具可以降低服务所需的开发和测试时间,简化 SOA 开发,从而增加服务交付的敏捷性。
本 文使用 Apache Geronimo 作为您编写的 XMLBeans 的开发容器(但可以使用任何服务器)。本文假设您过去使用过 XML 并熟悉 XML 模式、XQuery、XPath 等概念。即使您不是专家也不用担心,因为 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 的方式被访问。
下面是一个例子。假设您具有一个 XML 模式和与之对应的 XML 文件,该文件表示一本书。该文件包含一个叫做 Author 的元素,该元素与 book 具有一对多的关系。这是因为一本书可以具有多个作者,如 清单 1 所示。
|
使用 XMLBeans 处理该文件时,相应的 Java 类维护该关系。 清单 2 展示了一些伪 Java 代码,以处理由该 XML 文件产生的 XMLBean。
MyBook doc = MyBook.Factory.newInstance(); |
很 容易推知 XMLBeans 如何与基于 SOA 的开发相关。XML 位于大多数 SOA 技术的核心,不管它们是否使用 Web 服务。即使假设 SOA 等同于 Web 服务(不用争论这个问题,目前本来就是这样),作为致力于 SOA 项目的开发人员,您无疑要使用 XML。您可能具有这样的实践经验,即利用 XML 解析器操作 XML 内容,然后将 XML 文件手动转换为更易操作的对象结构。您可能解析过 XML 并在这些文件中查找特定数据。或者您可能将一种 XML 结构转换为另一种。XMLBeans 解决了 SOA 世界中的这个问题:它为您挑起重担,而您可以专注于编写 Web 服务或其他 SOA 服务。
使用 SOA 或 Web 服务时,不用编写应用服务器或 XML 解析器。相反,使用供应商构建的或作为开放源码提供的一种技术,这种技术被广泛采用和测试,且遵循自己的生命周期。那么为什么要编写和管理代码来将 XML 转换为 Java 对象呢?使用 XMLBeans 有助于缩短服务的开发和测试时间,从而让您在服务交付时更敏捷。
|
在 Apache Geronimo 中使用 XMLBeans
如前所述,本文在示例中使用 Apache Geronimo 作为部署容器。在本节中,您将编写一个简单的 XMLBean,然后将其部署在 Geronimo 中。
首先,需要一个 XML 模式。可以使用现有的也可以生成一个 XML 模式。几个 XML 工具,比如 XMLSpy 和
示例 XML 文件如 清单 3 所示。(本文不提供任何示例代码。您应该采用过去使用的 XML 文件,由之生成模式,然后再生成 XMLBean。这使您在阅读本文时可以看到 XMLBeans 发挥作用。
|
还可以在 XMLBeans Web 站点直接生成 XMLBeans,而不必下载或运行任何实用程序。为此,转到 XMLBeans Schema Validator 站点(参阅 参考资料 中的链接),并进入链接。图 2 展示了屏幕截图。此外,还可以下载 XMLBeans 发行版;它包含一个命令行实用程序和一个可以生成 XMLBean 的 Ant 任务。
生成 XMLBeans 之后,就有了包含所需的全部代码的 Java Archive (JAR) 文件。还必须从 Apache XMLBeans Web 站点(参阅 参考资料 中的链接)下载 XMLBean 可执行 JAR,并启动容器(在此为 Apache Geronimo)以使用所创建的 XMLBeans。
如果还没有完成上述操作,则下载并安装 Apache Geronimo(参阅 参考资料 中的下载链接)。假设您已经将 Apache Geronimo 安装在 c:javageronimo-1.0 中,将 XMLBeans 安装在 c:javaxmlbeans-2.1.0 中。下文将这两个目录引用为 GERONIMO_HOME 和 XMLBEANS_HOME。如果选择使用不同的目录结构,一定要相应地修改这些目录名。
虽然使用 XMLBeans 不需要应用服务器,但可以将 XMLBeans 用于部署在任何应用服务器中的 Java 2 Platform, Enterprise Edition (J2EE) 应用程序中,其中包括 Geronimo。本文解释高级概念并展示了一些演示如何操作的伪代码。但是,您应该使用实际文件来完成这些操作以获得最大收益。
假设您要构建一个简单的应用程序,通过 Web 服务与库或 Amazon.com 交换有关书的信息。典型场景假设您要尝试消费 Amazon Web 服务。可以尝试本文提到的场景之一,或者使用按照前述步骤创建的 XMLBean。
第 一步是将 XMLBEANS_HOMElib 目录中的 .jar 文件复制到 Enterprise Archive (EAR) 中。基于您计划如何以及在哪里使用 XMLBean,可能需要将这些文件放在 APP-INF/lib 或 WEB-INF/lib 中。甚至可以将它们放在 GERONIMO_HOMElib 目录中,使之可用于部署在本服务器实例上的任何 J2EE 应用程序。
接下来,将 J2EE 应用程序部署在 Apache Geronimo 中,如 developerWorks 文章 “Deploy J2EE applications on Apache Geronimo”(developerWorks,2006 年 1 月)所述。现在可以让 XMLBeans 的能力发挥作用了。
将 为 XMLBean 构建的 .jar 文件(使用作为 XMLBeans 发行版一部分提供的实用程序或 XMLBeans Web 站点)放在 APP-INF/lib 或 WEB-INF/lib 中。现在需要的就是针对 XMLBean 编写代码。对于本例,将编写一个简单的 JavaServer Page (JSP),其中包含使用 XMLBean 的一些 Java 代码。
清单 2 中的代码允许您创建新 XML 文档;它使用基本 JavaBean 类型的 getter 和 setter 来使用 XMLBean 创建 XML 文档。清单 4 包含的代码允许您将 XML 文件导入 XMLBean 中。
BookDocument book = null; try { book = |
在 JSP 中尝试这种类型的代码,并将 JSP 部署在 Geronimo 中以查看结果。
developerWorks 文章 “Deploy Web services in Apache Geronimo”(developerWorks,2005 年 4 月)展示了如何消费 Amazon Web 服务以及如何在 Apache Geronimo 中使用这些服务。作为练习,可以修改这种技术来使用 XMLBeans。
|
在这篇简短的动手文章中,学习了 XMLBeans 的基础知识以及如何使用 XMLBeans。还学习了如何在 Apache Geronimo 中使用 XMLBeans 的主要步骤。这与在 IBM® WebSphere® Application Server、Apache Tomcat、JBoss 或 BEA WebLogic 中使用 XMLBeans 没有任何不同。本文讨论的主题可以无缝地应用于这些产品。
本文还解释了在致力于 SOA 项目时,XMLBeans 可以如何为您节省时间。就特性、灵活性和性能(最重要)而言,它是最好的 Java-XML 绑定技术。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/374079/viewspace-130719/ ,如需转载,请注明出处,否则将追究法律责任。