XML&Java&XMLBeans结合应用的价值

简介: 通过阅读本文,您将了解面向服务的架构(Service-Oriented Architecture,SOA)、XML 和 XMLBeans 如何在解决实际商业问题中发挥重要作用及其原因,文中将以娱乐业为例进行案例分析。
通过阅读本文,您将了解面向服务的架构(Service-Oriented Architecture,SOA)、XML 和 XMLBeans 如何在解决实际商业问题中发挥重要作用及其原因,文中将以娱乐业为例进行案例分析。本文的目的并不在于介绍代码,而是让您了解在需要使用 XML 时如何使用 XMLBeans 及其原因。

  面对日益升级的软件复杂度,企业架构师的注意力逐渐集中到了一种能够解决系统集成问题的方法 —— 面向对象的架构(SOA)。从本质上来说,SOA 就是要通过增强业务与信息技术(IT)的运作关系来提高企业效益。

  SOA 将请求/应答设计范例应用于同步和异步应用程序中。在这种方法中,业务应用程序的逻辑和功能以服务的形式体现。应用程序开发人员或系统集成人员可以通过组合一项或多项服务来构建应用程序,而不必知道服务的底层实现方法。通过这种方式可以实际地整合所有 IT 资源,包括孤立的数据和以前不兼容的遗留系统。

  在 SOA 范例中,提供者与消费者通过消息进行通信。消息传递接口必须与平台和语言无关。因此,通常使用符合 XML 模式的 XML 文档来构造消息。当然,也常常以 XML 格式存储应用程序数据。

  XML 提供了基本语法,您可以使用基本语法在各种计算机、各种应用程序和各种组织之间共享信息,而无需经过多层转换。XML 之所以重要,是因为它为构建集成基础设施提供了通用的标准化平台,从而为企业应用程序集成工作提供支持。

   为什么使用 XMLBeans?

  使用 XMLBeans 可以将 Java™ 编程语言与 XML 结合使用。Java 编程语言是一种面向对象的语言,它基于开放的、公开的标准,可移植、健壮而且可靠。由于具备这些特点,Java 编程语言已被广泛接受并在包括娱乐业在内的许多行业中得到了实现。然而,XML 与 Java 编程语言不兼容。而 XMLBeans 就是扫清这一障碍的最佳选择。

  XMLBeans 用于 XML 数据绑定。使用 XMLBeans,Java 应用程序就可以充分利用 XML 的优势。XMLBeans 使用 XML Schema 来编译用于访问和修改 XML 实例数据的 Java 接口和类。使用此项技术,您可以将 XML Schema 编译到一组 Java 类中使其具有以下功能:

  遇到任何 Schema 时都使用 XMLBeans
  根据需要在任意级别访问 XML 数据
  XMLBeans 提供了以下应用程序接口(API)用于数据绑定:

  XmlObject:如果 Java 类是通过 XML Schema 生成的,则这些 Java 类都是派生自 XmlObject API。
  XmlCursor:XmlCursor API 提供了对 XML Infoset 的低层访问权,它表示 XML 实例中的光标位置。
  SchemaType:用于底层元信息的 XML Schema 对象模型。

  XMLBeans 编译器将生成 XML 模式的对象表示。这个对象表示是一组表示模式的结构和约束的通用 Java 类和接口。在生成 Java 类和接口后,符合该模式的 XML 实例文档就会与之绑定。绑定过程包括以面向对象的方式使用 XMLBeans API 来访问实际 XML 实例文档中的数据。

  如果使用功能强大的 XMLBeans,则无需为使用 XML 而编写所有代码。您可以轻松地在应用程序中使用 XML。如果不使用 XMLBeans,您就必须编写代码来利用模式的每一部分。试想:用 XMLBeans 为模式生成类,假定有若干个一对一、一对多和多对多关系需要管理,使用 XMLBeans 可以轻而易举地完成这一任务:

  安装 XMLBeans。
  编译模式来生成 Java Archive(JAR)文件。
  编写代码将 XML 实例绑定到表示模式的 Java 类型上。清单 1 提供了一个简单的例子:
  清单 1. XMLBeans 简单易用

    File xmlEntertainFile = new File("c:/entertain.xml");
  // Bind the instance to the XMLBeans types that were generated.
    EntertainDocument entDoc =
      EntertainDocument.Factory.parse(xmlEntertainFile);
  // Get and then print pieces of the XML instance.
    Entertain ent = entDoc.getEntertain();
    Entertain[] entArray = ent.getEntertainArray();
    for (int i = 0; i < entArray.length; i++)
      {
          System.out.println(entArray );
      }


  娱乐业

  那么,所有这一切是如何在现实世界里实现的呢?首先,计算能力发生了不可思议的转变。随着 SOA 的推广,计算能力越来越多地从传统星型模型(在这种模型里,高性能的服务器共同组成集线器)转到更加对等的模型上,组合网络的优势在于比中央服务器具有更强大的计算能力。实际上,中央服务器就变成了网络中的节点。随着 Internet 和高速 Internet 连接的发展,娱乐业走向了数字化。大多数新产品的销售和发行已经或即将采用数字化方式。

  信不信由你,娱乐业因声名狼藉的 Napster 采用这种计算范例而成为最早利用这种转变的行业之一。最近由 South by Southwest(SXSW, Inc.)举办的研讨会又用事实证明了娱乐业仍是先驱者。SXSW 是一家私人公司,位于得克萨斯州奥斯丁市。这家公司专门承办娱乐界及相关媒体业人士的会议和节庆活动。该公司最近承办的会议(2006 年 3 月 11 日至 14 日)讨论了数码创意和电影制作工作者在开发和制作时可利用的工具。其中一次小组讨论专门探讨了发展 XML 在娱乐业的应用:Looking for XML in All the Wrong Places。该公司的会议材料中写到,"Everyone wants to do everything with XML."

电影业

  电影业更是 XML 的热情拥护者。电影业已经在包装和发行数字化产品给影院和其他实体的进程中迈出了重要步伐,这其中就包括使用 XML。2005 年 7 月,致力于电影数字化的 Digital Cinema Initiatives(DCI)组织与活动影像和电视工程师协会(Society of Motion Picture and Television Engineers,SMPTE)标准委员会的成员合作,发布了获得主流电影制片公司认可的数字影院的系统规范。标准涵盖了 XML 在包装、文件格式、帧率和调速、编辑播放列表和包装清单等方面的使用。

  现在网络上可以找到有很多面向电影业的新应用程序,例如 Apple 的获奖软件 Final Cut Pro,该软件支持开放的、基于标准的 XML Interchange Format。在 Final Cut Pro 中,XML Interchange Format 说明了项目的各个方面。从剪辑、挂片及片段,剪接、转场及效果,到调色设置和关键帧,Final Cut Pro 都为创作人员和编程人员提供了找到影片设计中的亮点的方法。在 Final Cut Pro 中使用 XML 为您提供了一种开放、透明的纯文本格式,可通过多种多样的工具来阅读和操纵此格式。使用 XML Interchange Format 意味着 Final Cut Pro 用户可以与支持 XML 的任何应用程序或系统(包括数据库系统、网络服务器、基于 HTML 的 Web 创作工具和图形化应用程序)共享关于项目的各种信息。还意味着基于 Java 的应用程序可以使用 XMLBeans 轻松地访问这些数据。现在,开发人员可以创建与 Final Cut Pro 完全集成的基于 Java 的应用程序,也构建可节省大量时间和金钱的自定义后期制作管道,这都要归功于 XMLBeans。

  XMLBeans 与业内发行

  当然,后期制作结束后,要考虑的最重要的事情就是发行,不发行就没有利润。通过 Amazon.com 等代理商,Internet 已经成为各种形式媒体产品(例如 DVD、各类音乐,当然还有图书)发行的重要组成部分。很多人都知道 Amazon.com 是图书经销商,其实它也是娱乐业发行网络的一员。由基于 XML 的协议组成的 Amazon Web 服务(Amazon Web Services,AWS)提供了对 Amazon 的技术平台和产品数据的直接访问功能,从检索一组产品的信息一直到将产品放入购物车,从而提高应用程序的性能,或添加更好的搜索功能。使用 AWS,您可以直接访问 Amazon 的强大平台来启用和增强您的应用程序。

  Amazon.com 并非娱乐业的惟一 Internet 资源。Netflix.com 等实体也是发行网络的组成部分。Netflix 使用 RSS(Really Simple Syndication)提要来提供对其内容的访问。开发人员可以使用 RSS 提要创建各种有趣的新方法,来显示 Netflix 提供的信息。当然,RSS 提要不仅限于 Netflix。您可以在许多站点(无论是新闻通讯社的站点还是内容提供商的站点)中找到这些支持 XML 的文档。

  可以想像,这种新途径不但能带来巨额利润,而且几乎不会引致与数字版权管理(Digital Rights Management,DRM)和盗版相关的任何问题。随着新发行渠道的开辟,影视制作方(摄影棚、独立制作室等)必须要能与有意购买产品的各方(包括影院、电视台、租赁商和付费点播提供商)进行互动。目前,业内有几家成员正与电子商务组织探讨,在使用 Internet 这种最新或许也是最节省成本的发行渠道发行影视作品时,怎样才能做到既有利可图又安全可靠。这种交互构成了与 DRM 相关的问题。

  广泛使用 XMLBeans 的关键在于建立整个娱乐业都接受的开放式 XML 标准。不过,如果您要进行娱乐节目创作并且拥有 XML 编码标准(哪怕是您自己的 XML 模式),就可以利用 XMLBeans。只要使用 XML(无论标准与否),您就可以使用 XMLBeans 来提高创作效率,减少必须测试和维护的代码,并且达到松散耦合和更为面向服务的目标。在 XML 标准补充到 DRM 领域中之后,您还可以利用 XMLBeans 来执行和使用标准。通过本文及其他文章中列出的 XMLBeans 的技术优势,您可以看到一种应用 DRM 标准的一致方法,从而帮助您简化部署及与合作伙伴、发行商和客户交换版权数据的过程。DRM 领域内下一代标准是开放数字版权语言(Open Digital Rights Language,ODRL)。您可以从 ODRL 站点下载 XML 模式。

  若要从 ODRL 站点下载 XML 模式,请执行以下步骤:

  下载并安装 XMLBeans 和将在其中部署代码的容器。
  在 ODRL 站点中检索 Expression Language Schema 和 Data Dictionary Schema,然后将文件保存到您创建的容器中。
  访问 XMLBeans Web 站点,然后通过 XML 模式文件生成 XMLBeans。选择保存 Java 源文件的选项。生成的 xmlTypes.jar 文件包含使用 ODRL 和 XMLBeans 所需的类。
  使用 XMLBeans 还有很多其他优点。XMLBeans 可能是目前市场上最成熟的 XML 对象绑定技术,而且免费。总之,XMLBeans 绝对是您在使用 XML 时值得考虑的工具。随着 XML 在娱乐业内的应用的快速发展,如果要使 XML 内容可为基于 Java 的应用程序所用,您会很容易地看到 XMLBeans 的优势。

  结束语

  娱乐业在多种层面上为很多应用程序使用了 XML。由于 Java 编程语言是世界标准的面向对象的编程语言,而 XML 已成为娱乐业首选的数据格式,XMLBeans 将很快成为首选的 Java 绑定工具。XMLBeans 可创建用于 Java 开发的类,从而避免重复劳动,节约时间和成本。两者结合在一起,为开发客户和供应商应用程序提供了切实有效的方法
 
相关文章
|
1月前
|
人工智能 安全 Java
Java和Python在企业中的应用情况
Java和Python在企业中的应用情况
55 7
|
7天前
|
安全 算法 Java
Java CAS原理和应用场景大揭秘:你掌握了吗?
CAS(Compare and Swap)是一种乐观锁机制,通过硬件指令实现原子操作,确保多线程环境下对共享变量的安全访问。它避免了传统互斥锁的性能开销和线程阻塞问题。CAS操作包含三个步骤:获取期望值、比较当前值与期望值是否相等、若相等则更新为新值。CAS广泛应用于高并发场景,如数据库事务、分布式锁、无锁数据结构等,但需注意ABA问题。Java中常用`java.util.concurrent.atomic`包下的类支持CAS操作。
31 2
|
30天前
|
缓存 Java 开发者
Java多线程并发编程:同步机制与实践应用
本文深入探讨Java多线程中的同步机制,分析了多线程并发带来的数据不一致等问题,详细介绍了`synchronized`关键字、`ReentrantLock`显式锁及`ReentrantReadWriteLock`读写锁的应用,结合代码示例展示了如何有效解决竞态条件,提升程序性能与稳定性。
133 6
|
28天前
|
监控 Java 数据库连接
Java线程管理:守护线程与用户线程的区分与应用
在Java多线程编程中,线程可以分为守护线程(Daemon Thread)和用户线程(User Thread)。这两种线程在行为和用途上有着明显的区别,了解它们的差异对于编写高效、稳定的并发程序至关重要。
32 2
|
1月前
|
关系型数据库 MySQL Java
MySQL索引优化与Java应用实践
【11月更文挑战第25天】在大数据量和高并发的业务场景下,MySQL数据库的索引优化是提升查询性能的关键。本文将深入探讨MySQL索引的多种类型、优化策略及其在Java应用中的实践,通过历史背景、业务场景、底层原理的介绍,并结合Java示例代码,帮助Java架构师更好地理解并应用这些技术。
42 2
|
1月前
|
存储 安全 Java
Java多线程编程中的并发容器:深入解析与实战应用####
在本文中,我们将探讨Java多线程编程中的一个核心话题——并发容器。不同于传统单一线程环境下的数据结构,并发容器专为多线程场景设计,确保数据访问的线程安全性和高效性。我们将从基础概念出发,逐步深入到`java.util.concurrent`包下的核心并发容器实现,如`ConcurrentHashMap`、`CopyOnWriteArrayList`以及`BlockingQueue`等,通过实例代码演示其使用方法,并分析它们背后的设计原理与适用场景。无论你是Java并发编程的初学者还是希望深化理解的开发者,本文都将为你提供有价值的见解与实践指导。 --- ####
|
1月前
|
Java 测试技术 API
Java 反射机制:深入解析与应用实践
《Java反射机制:深入解析与应用实践》全面解析Java反射API,探讨其内部运作原理、应用场景及最佳实践,帮助开发者掌握利用反射增强程序灵活性与可扩展性的技巧。
111 4
|
2月前
|
XML 前端开发 Java
讲解SSM的xml文件
本文详细介绍了SSM框架中的xml配置文件,包括springMVC.xml和applicationContext.xml,涉及组件扫描、数据源配置、事务管理、MyBatis集成以及Spring MVC的视图解析器配置。
81 1
|
4月前
|
XML Java 数据格式
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
这篇文章是Spring5框架的实战教程,主要介绍了如何在Spring的IOC容器中通过XML配置方式使用外部属性文件来管理Bean,特别是数据库连接池的配置。文章详细讲解了创建属性文件、引入属性文件到Spring配置、以及如何使用属性占位符来引用属性文件中的值。
Spring5入门到实战------7、IOC容器-Bean管理XML方式(外部属性文件)
|
1月前
|
XML Android开发 数据格式
Eclipse 创建 XML 文件
Eclipse 创建 XML 文件
28 2