用实例介绍针对个性化和定制的 Oracle ADF 服务(续)— 在本部分中,将安装和配置一个信息库以持久存储定制结果。
作者:John Stegeman
2010 年 5 月发布
下载:
如今,应用程序用户希望他们经常使用的应用程序能够记住他们喜欢的工作方式,从而无需每次登录时都重新设置应用程序。例如,用户希望他们常用的搜索和屏幕布局日复一日地保持不变,以便他们更加轻松直观地使用应用程序。利用 Oracle Metadata Services (MDS) 提供的基础,Oracle Application Development Framework (ADF) 应用程序可以提供这样的持久个性化。本文介绍如何构建可在设计时定制的 Oracle ADF 应用程序,以及如何安装和配置 MDS 信息库以持久保存设计时和运行时定制结果。
通过本系列前面一些文章的学习,您已了解了如何允许最终用户在运行时对您的 Oracle ADF Faces 应用程序进行定制以及如何开发种子定制。至此,您已使用与 Oracle JDeveloper 11g 集成开发环境 (IDE) 集成在一起的 Oracle WebLogic Server(该服务器使用一个基于文件的模拟的 MDS 信息库)运行并测试了您的应用程序。这种配置对于测试来说是很好的,但是如何在生产环境中实现呢?本文将介绍如何创建和配置一个基于数据库的 MDS 信息库,如何将该 MDS 信息库注册到 Oracle WebLogic Server,以及如何部署和管理您的可定制 Oracle ADF 11g 应用程序。
撰写本文时使用的是 Oracle JDeveloper 11g 11.1.1.2 版。如果您使用所提供的示例应用程序,您将需要更改 Application Navigator 中 Application Resources 面板中定义的 HR 连接的连接信息。另请注意,要运行示例应用程序,您应遵循本文所述任何所需配置步骤。
要部署一个可定制应用程序,无论该应用程序是支持最终用户定制、种子定制还是同时支持这两种定制,您都需要创建一个信息库来保存 MDS 信息并将该信息库注册到将要部署该应用程序的 Oracle WebLogic Server 中。当您准备好部署该应用程序时,Oracle JDeveloper 11g 会将该应用程序的元数据信息打包到一个特殊的称为元数据存档(即 MAR)的文件中,然后将这个 MAR 文件放入该应用程序的企业存档 (EAR) 文件中以便部署到服务器中。您还可以创建一个独立的 MAR 文件,然后对一个已部署的应用程序部署该文件;在一些情况下,例如,当您想更新应用程序的种子定制元数据但不想重新部署整个应用程序时,您可能就想这么做。
MDS 信息库可以基于文件也可以基于数据库,但对于部署,我(和 Oracle)出于性能方面的考虑建议使用基于数据库的信息库。要创建基于数据库的信息库,可使用一个名为 Repository Creation Utility (RCU) 的实用程序,您可从 Oracle 技术网上的 Oracle Fusion Middleware 11g 下载页面获得该实用程序。可以使用 RCU 为 Oracle Fusion Middleware 11g 创建各种类型的信息库,但这里我们使用它只是为了创建 MDS 信息库。如果您已使用 RCU 创建了一个信息库(例如,如果您已安装了 Oracle SOA Suite 11g,则可能已创建了一个信息库),就不必再次运行 RCU 了,除非您想单独创建一个 MDS 信息库。首先,下载 RCU 并将其解压缩到您硬盘上的一个位置。完成后,您可找到一个名为“rcuHome”的目录。为了创建基于数据库的 MDS 信息库,显然您需要一个数据库;下面我将演示如何使用 RCU 在一个 Oracle 数据库(您也可以使用 Microsoft SQL Server)中创建 MDS 信息库。要创建 MDS 信息库,执行以下步骤:
图 1 RCU — welcome 页面
图 2 选择 Create
图 3 RCU — 数据库连接详细信息
图 4 RCU — 成功的必备条件检查
图 5 RCU — 选择 MDS 信息库
图 6 RCU — 提供 MDS 模式口令
图 7 RCU — 映射表空间
图 8 RCU — Summary 页面
图 9 RCU — Completion Summary
为使 MDS 信息库可为您的 Oracle ADF 应用程序所使用,您需要将该信息库注册到部署该应用程序的 Oracle WebLogic Server 域中。注册 MDS 信息库有两种方法。第一种方法是使用 Oracle Enterprise Manager 11g Fusion Middleware Control 通过一个图形用户界面来注册它。如果您喜欢,或者如果您在自己的 Oracle WebLogic Server 域中未安装 Oracle Enterprise Manager 11g Fusion Middleware Control,则可以使用 WebLogic Scripting Tool (WLST) 命令行实用程序进行注册。本文将演示这两种方法,首先使用 Oracle Enterprise Manager (OEM) 11g Fusion Middleware Control:
图 10 Configuration Wizard
图 11 转到 Metadata Repositories 页面
图 12 注册信息库
图 13 注册成功
如果您不想使用 OEM 注册 MDS 信息库,或者您未在 Oracle WebLogic Server 域中配置 OEM,则可使用 WLST 注册信息库。基本 Oracle WebLogic Server 安装所附带的 WLST 未配置进行 MDS 信息库管理所需的命令。Oracle 文档并未完全明确指出哪些 Oracle 产品安装具有合适的 WLST 配置。幸运的是,Oracle JDeveloper 11g 在 <jdeveloper 主目录>/oracle_common/common/bin 目录中包括一个正确配置的 WLST。要使用 WLST 注册 MDS 信息库,执行以下步骤:
图 14 使用 WLST 连接到 Oracle WebLogic Server
图 15 使用 WLST 注册 MDS 信息库
如果您一直在跟踪学习本系列的文章,则可使用您已构建的示例应用程序,也可从这里下载该应用程序的一个副本。(参见“第 5 步”文件。)部署一个使用 MDS 的可定制 Oracle ADF 应用程序的过程与部署一个“标准的”Oracle ADF 应用程序的过程类似,但有一个主要不同之处:部署可定制的应用程序时,您必须提供有关使用哪个 MDS 信息库和信息库分区的额外信息。MDS 信息库分区是一个用于在信息库中保存元数据的逻辑分组的容器。许多元数据管理命令(如导入/导出元数据)针对 MDS 信息库分区进行操作。
Oracle WebLogic Server 控制台不公开 MDS 配置信息,因此不能用来部署可定制应用程序。您可以使用以下三种方法部署您的可定制应用程序:
可能还有第四种方法,这就是用 MDS 信息库信息手动更新您应用程序的 adf-config.xml 配置文件。尽管我已成功测试了这一方法,但并不建议采用这一方法,因为我没能发现任何官方文档提供了合适的配置。您实际选择哪种方法取决于您对哪个过程感到最为满意。本文将简要说明所有这三种方法。由于本文特别关注的是 MDS,我将主要关注部署过程中涉及 MDS 的部分,并假定您已知道如何:
根据应用程序的 EAR 文件中存在 MAR 的指示,Oracle JDeveloper 11g 应用程序部署向导将自动提示您提供所需的 MDS 信息。要使用 Oracle JDeveloper 11g 将示例应用程序部署到一个正确配置的 Oracle WebLogic Server,执行以下步骤:
图 16 到 Oracle WebLogic Server 的本地 IDE 连接
图 17 启动 Oracle JDeveloper 11g 部署向导
图 18 Deploy to Application Server 选项
图 19 选择应用程序服务器和选项
图 20 MDS 信息库配置
现在,您可继续测试您的应用程序了。
和 Oracle JDeveloper 11g 部署向导一样,OEM 11g Fusion Middleware Control 部署向导在您部署可定制应用程序时也将提示您提供 MDS 信息库信息。要使用 OEM 11g Fusion Middleware Control 部署应用程序,执行以下步骤:
图 21 部署到 EAR 文件
图 22 通过 OEM 11g Fusion Middleware Control 启动部署
图 23 选择 EAR 文件
图 24 配置应用程序属性
图 25 部署设置
现在,您可继续测试您的应用程序了。
使用 WLST 命令行工具部署可定制 Oracle ADF 应用程序的过程分为两步。首先,您必须使用 WLST 将 MDS 信息库配置信息添加到应用程序的 EAR 文件;然后,您可以使用 WLST 将该应用程序部署到 Oracle WebLogic Server。如本系列早前所述,任何 Oracle WebLogic Server 11g 安装都会提供 WLST,然而,并非每个 WLST 安装都支持针对 MDS 的命令。Oracle 产品文档提到过这点,但没有明确列出哪些产品安装提供的 WLST 可用于配置 MDS;对于本文,我将说明如何使用我确信有效的 WLST(即 Oracle JDeveloper 11g 安装随带提供的 WLST)进行该配置。要使用 WLST 部署示例应用程序,执行以下步骤:
图 26 getMDSArchiveConfig() wlst 命令
图 27 setAppMetadataRepository() wlst 命令
图 28 save() wlst 命令
图 29 连接到 Oracle WebLogic Server
图 30 部署应用程序并查看部署状态
在使用其中一种技术部署该应用程序之后,现在您可对该应用程序进行测试了,使用合适的 URL 确保用户 john 和 josephine 均能够在运行时定制该应用程序并且种子定制显示正确。(分别参考第 8 和第 9 部分。)
一旦可定制应用程序开始在生产环境中运行,您可以使用 OEM 11g Fusion Middleware Control 或 WLST 管理 MDS 元数据信息库中存储的信息。这两个工具均能够:
本文不会逐一演示上述操作,而是演示如何创建、列出和提升标签,可以使用这些方法来存和恢复应用程序元数据的特定时间点版本。您可以相同方式执行其他操作;有关 WLST 命令语法,可查看 WLST 命令参考(参见“资源”一节),或者 OEM 11g Fusion Middleware Control 应用程序以浏览这些命令。
首先我们使用 OEM 11g Fusion Middleware Control(简称为 OEM)列出示例应用程序的所有现有标签。由于尚未显式地创建任何标签,您可能会认为现在还没有标签;然而,各种部署工具可在每次部署之后自动创建标签。要使用 OEM 列出标签,执行以下步骤:
图 31 启动 MBean Browser
图 32 选择 MDSAppRuntime MBean
图 33 listMetadataLabels 操作
图 34 应用程序元数据标签列表
您可以使用 OEM 以相同的方式调用其他操作。现在,我们使用 OEM 创建应用程序元数据的一个名为 test 的版本。为此,可单击 createMetadataLabel 操作,指定名称 test 作为标签,然后单击 Invoke:
图 35 创建 test 标签
如果愿意,您可以再次调用 listMetadataLabels 操作来确认创建了这个标签。
现在我们假定该应用程序已在生产环境中运行了数周的时间,我们的最终用户 john 和 josephine 已在运行时对该应用程序进行了个性化设置;然而,出于某种原因,他们都想将其个性化设置恢复到其在最后一次部署之后最初的状态。为此,可以提升相应的标签。下面我将演示提升早前的一个标签 postDeployLabel_MDS_2594457265 的过程。因为您已了解了如何使用 OEM 来管理 MDS,所以现在我们使用 WLST 来进行提升。要使用 WLST 提升标签,执行以下步骤:
图 36 使用 WLST 提升标签
现在,您应能够创建、部署和管理用户可定制的 Oracle ADF 11g 应用程序(允许用户按自己的喜好来对其进行定制的应用程序)和设计时可定制应用程序(可以在设计时针对不同用户群体而定制的应用程序)了。
John Stegeman (stegemanoracle.wordpress.com) 是一位 Oracle ACE 总监(Oracle 融合中间件),也是 Xchanging 这个全球性业务流程外包和 IT 服务公司的一位架构师。他从 1990 年开始就使用 Oracle 产品工作,从版本 3 开始就使用 Oracle JDeveloper 了。