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

对 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 文件

        Pro Apache BeehiveKunal MittalSrinivas Kanchanvally1590595157

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

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

        MyBook doc = MyBook.Factory.newInstance(); Book book = doc.addNewBook();book.setTitle("Pro Apache Beehive"); book.setIsbn("1590595157"); String[] authors = new String[2]; authors[0] = new String("Kunal Mittal"); authors[1] = new String("Srinivas Kanchanavally"); book.setAuthors(authors); 

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 有助于缩短服务的开发和测试时间,从而让您在服务交付时更敏捷。


回页首

在 Apache Geronimo 中使用 XMLBeans

如前所述,本文在示例中使用 Apache Geronimo 作为部署容器。在本节中,您将编写一个简单的 XMLBean,然后将其部署在 Geronimo 中。

首先,需要一个 XML 模式。可以使用现有的也可以生成一个 XML 模式。几个 XML 工具,比如 XMLSpy 和 XML,可以轻易完成该操作。还可以在 XMLBeans 模式生成站点(参阅本文底部 参考资料 一节中的链接)在线生成 XML 模式(参阅本文底部 参考资料 一节中的链接)。

示例 XML 文件如 清单 3 所示。(本文不提供任何示例代码。您应该采用过去使用的 XML 文件,由之生成模式,然后再生成 XMLBean。这使您在阅读本文时可以看到 XMLBeans 发挥作用。

清单 3. book 的 XML 示例

        <?xml version="1.0" encoding="UTF-8"?> 1Pro Apache BeehiveBookKunal Mittal, Srinivas KanchanvallyApress2005-08-31123159059515749.99The 1st book on Apache Beehive300false

还可以在 XMLBeans Web 站点直接生成 XMLBeans,而不必下载或运行任何实用程序。为此,转到 XMLBeans Schema Validator 站点(参阅 参考资料 中的链接),并进入链接。图 2 展示了屏幕截图。此外,还可以下载 XMLBeans 发行版;它包含一个命令行实用程序和一个可以生成 XMLBean 的 Ant 任务。

图 2. XML 模式验证站点

生成 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。本文解释高级概念并展示了一些演示如何操作的伪代码。但是,您应该使用实际文件来完成这些操作以获得最大收益。

设置 J2EE 应用程序

假设您要构建一个简单的应用程序,通过 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

将为 XMLBean 构建的 .jar 文件(使用作为 XMLBeans 发行版一部分提供的实用程序或 XMLBeans Web 站点)放在 APP-INF/lib 或 WEB-INF/lib 中。现在需要的就是针对 XMLBean 编写代码。对于本例,将编写一个简单的 JavaServer Page (JSP),其中包含使用 XMLBean 的一些 Java 代码。

编写代码以处理 XMLBean

清单 2 中的代码允许您创建新 XML 文档;它使用基本 JavaBean 类型的 getter 和 setter 来使用 XMLBean 创建 XML 文档。清单 4 包含的代码允许您将 XML 文件导入 XMLBean 中。

清单 4. 将 XML 文件读入 XMLBean 中

        BookDocument book = null; try { book =BookDocument.Factory.parse(pathtobookxmlfile); } catch (XmlException e) {e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 

在 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博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130220/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/374079/viewspace-130220/

[转载]使用 XMLBeans 在 Apache Geronimo 中部署 SOA 应用程序相关推荐

  1. 在 Tomcat 中部署 Java Web 程序 ( jar cvf *.war */. ) war 包

    本文基本转自:http://www.blogjava.net/ocean07000814/articles/331694.html 主要讲的是在 Tomcat 中部署 Java Web 应用程序.因为 ...

  2. 在Linux中部署Java web程序

    一:安装jdk 使用 yum list 搜索 jdk 软件包,找到带有 devel 后缀的文件,这才是要安装的软件包. 注意:安装 jdk1.8 yum install java-1.8.0-open ...

  3. [转载]权衡 Apache Geronimo EJB 事务选项,第 3 部分: 综合所有事务

    权衡 Apache Geronimo EJB 事务选项,第 3 部分: 综合所有事务 Jonathan Sagorin 在 由三部分组成的系列文章 的最后一部分中对 Enterprise Java™B ...

  4. 在LINUX中部署Apache

    在LINUX中部署Apache  服务器 部署的思路如下过程: 一. 确认服务是否安装. 1)在图形界面下,添加删除程序中要确保,万维网服务器和图形化互联网,这两个选项被选上.如果没选上,勾选上后,把 ...

  5. 如何在CDH5.16.2中部署海豚调度器Apache Dolphin Scheduler 1.2.0

    Apache Dolphin Scheduler 组件介绍 分布式易扩展的可视化DAG工作流任务调度系统.致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用. 官网 : h ...

  6. Apache Geronimo Remote Code Execute Vulnerability

    简介: Apache Geronimo 是 Apache 软件基金会的开放源码J2EE服务器,它集成了众多先进技术和设计理念. 这些技术和理念大多源自独立的项目,配置和部署模型也各不相同. Geron ...

  7. 在Tomcat中部署Java Web应用程序几种方式

    在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录.  一.静态部署       静态部署指的是我们在服务器启动之 ...

  8. docker 中部署一个springBoot项目

    docker 中部署一个springBoot项目 (1)介绍 springBoot项目 1.项目结构 2.pom.xml [java] view plaincopy <?xml version= ...

  9. 在嵌入式Jetty(Embedded Jetty)中部署FastCGI Servlet载入PHP程序

    这段时间由于服务器架构,需要研究在Java基础上的Jetty中部署PHP程序(Wordpress,Discuz) 在网上查了很多资料,都是用httpd或者nginx当前段Web Server,Jett ...

最新文章

  1. Python错误:AttributeError: 'generator' object has no attribute 'next'解决办法
  2. 2017-2018-1 20155202 《信息安全系统设计基础》第9周学习总结
  3. w3wp trace文件Debug
  4. 虚拟主机评测网已经崭露头角
  5. QUIC实战(三) letsencrypt证书申请和自动续期
  6. 2异常处理_Java处理异常2种机制关键字区别解析
  7. 二阶龙格库塔公式推导_带你走进最美数学公式
  8. VS2017透明背景和皮肤设置
  9. 毕业设计-分布式爬虫系统(干货)
  10. 数据库使用率对比【CSDN指数】
  11. JAVASE基础(十)
  12. 【软件过程管理】课程知识点梳理及习题
  13. Qt6.3.1播放音频文件QAudioSink
  14. http://myproducts.ca/here.php,外研(新标准)版
  15. 盛金公式 C++(求解一元三次方程的求根公式)
  16. ArcGIS三维建模(一)
  17. 新人 天池大数据初涉水
  18. 淘宝客网站架构设计方案
  19. 考研网上辅导系统用例说明文档
  20. c语言是pdd格式的文件吗,C语言中符号格式说明

热门文章

  1. python--转转盘游戏
  2. 戴尔外星人笔记本搭载固态硬盘RAID 0
  3. ubuntu 光盘读取
  4. Python 二进制 转换
  5. 数据分析综合应用练习:超市销售额分析
  6. CTF——MISC习题讲解(MRCTF2020系列)
  7. 智能移动设备部件概况——降噪麦克风及其扬声器
  8. 【达内课程】简单计算器实现
  9. IBM DS4300磁盘损坏事故的数据恢复解决思路
  10. 产品设计:细节决定成败