使用 XML 绑定的 Java 体系结构 (JAXB) 的保险配置文件系统
目录
XML 绑定的 Java 体系结构 (JAXB) 提供在 XML 文档与 Java 对象间自动进行映射的 API 和工具。JAXB 通过将 XML 模式编译到一个或多个 Java 技术类中,使 XML 变得易于使用。模式衍生类与绑定框架的结合使用户能够在 XML 文档中执行以下操作:
- 将 XML 内容散集到 Java 对象表示中
- 根据模式约束访问、更新和验证 Java 表示
- 将 XML 内容的 Java 表示列集到 XML 内容中
JAXB 为 Java 开发人员提供了一种在 XML 和 Java 代码间进行映射的高效而标准的方法。使用 JAXB 的 Java 开发人员具有更高的生产率,因为他们自己可以编写较少的代码,并且不必是 XML 方面的专家。Oracle 通过其 Oracle10g XDK 提供对最新 XML 标准(包括 JAXB)的广泛支持。Oracle10g XDK 中的 JAXB 类生成器部分允许基于 XML 模式创建 Java 类。
保险配置文件系统
应用程序概述
保险配置文件系统是一个允许存储和检索客户配置文件信息的应用程序。保险配置文件信息包括类似客户 id、姓名、性别、年龄、地址、联系信息等客户信息。保险声明历史也是客户配置文件文档的一部分。所有这些信息被构造为 XML 文档。XML 模式定义文档的结构。它利用复杂类型,在单个复杂类型中合并相关信息。用户可以添加和更改客户配置文件记录。他们还可以向客户配置文件记录添加声明信息,也可从客户配置文件记录中删除声明信息。
技术概要
用户接口基于 Java Swing API。保险配置文件信息取自两个数据源之一,一个数据源来自文件系统,另一个数据源来自数据库。注意,在任何时间点都仅有一个数据源处于活动状态。从文件中检索的数据可利用 JAXB 和 文件输入/输出流 API 转换为 Java 对象。Streamsource API 用于列集和散集来自数据库的数据。数据库信息在应用程序自身中指定。数据库中的 XMLType 表用于存储保险配置文件记录。而在数据源是文件系统的情况下,记录以纯文本文件形式保存。下图(图 1)从高级的角度说明技术概要:
图 1.
以下列出由 Oracle JAXB 实施提供的特性,在所考虑的应用程序中演示了这些特性:
- JAXB 类生成器的使用
- Marshaller 和 Unmarshaller 类的使用
- 从文件和 StreamSource 进行列集和散集
- 联合使用 JAXB 和 XMLType
- 绑定 XML 模式和复杂类型
- 在模式定义(多项声明信息)中使用集合类型
- 散集 — 时间的验证
利用下面“安装和配置”部分中的指示,安装应用程序。在成功配置应用程序以后,启动程序可看到如下图 1.1 所示的屏幕。该屏幕提示用户选择一个数据源:
图 1.1:第一屏
当用户使用默认选项“File System”或将其改为“Database”并单击 "Next" 按钮时,要求用户输入保存示例 XML 文件的目录位置。该目录包含一些示例记录,这些示例记录根据用户选择的数据源而装载在应用程序或数据库中。请参考图 1.2:
图 1.2 (其显示与选择加载一些示例记录的数据源无关)
在这里输入或选择提供示例文件的目录 /xml。如果图 1.1 中选择的选项为“File System”,并且用户单击“Next”按钮,则向用户显示图 1.4 中的屏幕,并显示所提供目录中示例文件加载的所有保险记录。 如果用户从上图 1.1 中显示的屏幕选择了“Database”选项并单击 "Next" 按钮,则要求用户输入数据库连接信息,如下图 1.3 所示:注意,文件“profError1.xml” 和“profileError2.xml”无效,而这就是您看到错误消息的原因。
图 1.3 (只有当数据源是数据库时显示)
当用户在图 1.3 中的屏幕上单击 "Next" 按钮时,将会使用图 1.3 中提供的连接信息将图 1.2 中所提供目录中的示例文件加载到数据库表中。然后显示数据库表中相同的保险记录,如下图 1.4所示:
图 1.4
从上图 1.4 的屏幕中,用户可以更新任何保险记录,还可以使用 "New" 按钮创建新的记录。为更新记录,用户可以更改所需的详细内容并使用 "Save" 按钮将更改提交到所选择的数据源(文件系统或者数据库)。在更新记录时,用户还可以使用 "Insert Claim" 和 "Delete Claim" 按钮编辑相关的保险声明记录。
注意,"Save" 按钮只保存用户正在处理的当前记录。要更新和保存除了当前在屏幕上所显示记录之外的其他记录,用户可以使用 "Previous" 和 "Next" 按钮,首先移动到所需记录,再对其进行更新。
当用户从上图 1.4 中的屏幕选择“New”按钮时,将显示下图 1.5 中的屏幕。注意,在该屏幕中只有“Save”和“Previous”按钮可用。此处的“Previous”按钮可用于移动到数据源中现有的可更新记录,而“Save”按钮可用于保存所输入的新记录。
图 1.5
在任何情况下,用户都可以使用菜单选项 "View XML/XSD files" 来查看当前记录的 XML。同样,用户可以使用“Application”=>“Home Panel”返回主屏幕,以便返回到第一屏并更改数据源。要退出应用程序,可使用 "Application" => "Exit" 菜单选项。
- XML 开发人员工具包 (XDK) 10g
- Oracle9i Database 版本 9.2.0.2 或更高版本。
- 运行此应用程序需要 JDK 1.4.2 或更新版本
参考示例 jar 中提供的 Install.html 文件,了解有关解压缩文件、安装和配置系统以便成功运行本应用程序的逐步指导。
JAXBApp.jar 的目录结构如下所示。JAXBApp 是顶级目录,所有应用程序文件保存在该目录下。
| 目录
|
文件
|
说明
|
| JAXBApp\doc |
Readme.html |
本文件。 |
| Install.html |
本文件含有部署和运行应用程序所需的指示。 |
| otn.css |
自述文件所使用的样式表。 |
| /images |
本目录包含自述文件和安装文件中所使用的图像。 |
| JAXBApp\src\oracle\otnsamples\orajaxb |
DBRecordHolder.java |
此类处理数据库存储和检索逻辑。 |
| IProfileManager.java |
这是任何希望作为本应用程序的数据存储的类所必须实现的接口。 |
| MainFrame.java |
应用程序的主框架。 |
| Panel1.java |
此面板允许用户选择数据存储。 |
| Panel2.java |
此面板允许用户输入数据库连接的详细信息。 |
| Panel3.java |
此面板允许用户选择示例记录的目录。 |
| Panel4.java |
此面板以图形格式显示配置文件记录。 |
| Panel5.java |
此面板显示配置文件记录模式的定义。 |
| Panel6.java |
此面板显示配置文件记录的 XML 文档。 |
| RecordHolder.java |
此类处理文件系统存储和检索逻辑。 |
JAXBApp\src\oracle\otnsamples\orajaxb\profile 请注意,这些文件没有与示例一起提供。Oracle JAXB 类生成器生成这些文件。
|
Address.java |
由 Oracle JAXB 类生成器生成。 此接口包含 Address 类(包含在 Record 对象中)的 getter 和 setter 方法。 |
| AddressImpl.java |
由 Oracle JAXB 类生成器生成,包含 Address 接口的实现。 |
| Claims.java |
由 Oracle JAXB 类生成器生成。此接口包含 Claims 类(包含在 Record 对象中)的 getter 和 setter 方法。 |
| ClaimsImpl.java |
由 Oracle JAXB 类生成器生成,包含 Claims 接口的实现。 |
| Customer.java |
由 Oracle JAXB 类生成器生成。此接口包含 Customer 类(包含在 Record 对象中)的 getter 和 setter 方法。 |
| CustomerImpl.java |
由 Oracle JAXB 类生成器生成 包含 Customer 接口的实现。
|
| JaxbSchemaInfo.java |
由 Oracle JAXB 类生成器生成。此类包含有关配置文件模式中元素的信息。
|
| ObjectFactory.java |
由 Oracle JAXB 类生成器生成。Factory 类,生成由 JAXB 类生成器所生成类的实例。 |
| Profile.java |
由 Oracle JAXB 类生成器生成。此接口包含 Profile 类(包含在 Record 对象中)的 getter 和 setter 方法。
|
| ProfileImpl.java |
由 Oracle JAXB 类生成器生成。包含 Profile 接口的实现。
|
| Record.java |
由 Oracle JAXB 类生成器生成。它含有空的接口定义。 |
| RecordImpl.java |
由 Oracle JAXB 类生成器生成。实现 Record 接口。 |
| RecordType.java |
由 Oracle JAXB 类生成器生成。它含有访问复杂类型的 setter 和 getter 方法。
|
| RecordTypeImpl.java |
由 Oracle JAXB 类生成器生成。此类实现 RecordType 接口。
|
| jaxb.properties |
由 Oracle JAXB 类生成器生成。此文件指定上下文工厂。
|
| JAXBApp\images |
*.jpg |
应用程序所使用的图像。 |
| JAXBApp\xml |
profile.xsd |
保险配置文件 XML 模式的定义文件。 |
*.xml
|
表示配置文件记录的示例 XML 文件。
|
|