对于独立软件供应商 (ISV) 及其客户而言,解决方案远不仅仅是应用程序本身。一套完整的解决方案包含一个应用程序,但应用程序需要同中间件集成在一起,才能在客户的环境中工作。ISV 要将其应用程序转换为解决方案,通常需要经历包括获得、安装、配置和支持多种不同的中间件的复杂过程,而这些中间件又通常来自不同的供应商并且具有不同的条款和条件以及不同的许可结构等等。由此可以看出,将某个应用程序同所有不同的支持组件进行集成,以及将它们全部部署到客户环境中,整个过程通常会相当复杂。
IBM Express Runtime 改变了这一切。IBM Express Runtime 提供了一组内聚的中间件和单一环境,允许 ISV 将中间件同他们自己的应用程序中间件一起作为单个程序包跨多个平台快速、高效地创建和部署。本文将为您介绍在开始使用 IBM Express Runtime V2.1.1 开发和部署完整的中型业务解决方案时需要了解的内容,其中包括:
- 组装基于 Web 的 Enterprise JavaBeans™ (EJB) 应用程序。
- 使用 IBM 的三个主要中间件——IBM WebSphere® Application Server - Express V6.0.2、IBM DB2® Universal Database Express Edition V8.2 Fixpack 3 和 IBM HTTP Server V6.0.2——所有这些都包含在 IBM Express Runtime V2.1.1 中。
- 使用 Express Runtime Developer。
- 使用部署向导部署集成解决方案。
在下面几个部分中,我们将介绍 IBM Express Runtime 并演练整个开发和部署过程:
本文假定读者具有 J2EE 应用程序开发的背景知识。为了按照本文中介绍的步骤进行操作,需要在您的环境中正确安装 IBM Express Runtime V2.1.1。
有关获得 IBM Express Runtime 的评估副本的详细信息,请访问 IBM PartnerWorld 网站。
首先,我们来了解一下什么是 IBM Express Runtime 以及您能用它来做什么。
IBM Express Runtime V2.1.1(以下称为 Express Runtime)包含下列主要的组件:
-
运行中型业务应用程序所需的全功能 IBM 中间件:
- IBM WebSphere Application Server - Express V6.0.2
- IBM DB2 Universal Database (UDB) Express Edition V8.2, Fixpack 3
- IBM Informix® Dynamic Server Express V10.0 TC3E/UC3E
- IBM HTTP Server V6.0.2
- WebSphere Application Server - Express 6.0.2 Web 服务器插件
-
解决方案组装工具包中包括:
- Express Runtime Developer ,可帮助您组装应用程序及 IBM 中间件。
- Deployment wizard ,可快速有效地将您的解决方案部署到目标系统上。
- IBM Rational® Web Developer V6.0 应用程序开发工具。
- Express Runtime console 提供了单一的基于 Web 的 IBM 中间件管理工具。
总的来说,在 Express Runtime 环境中从开发到部署解决方案的整个过程可分为五个步骤,如图 1 所示。
图 1. Express Runtime 体系结构
第 1 步:使用 IBM Rational Web Developer V6.0 或相当的应用程序开发工具,开发您自己的 J2EE 应用程序。
第 2 步:在内部的开发计算机上安装 Express Runtime。在 Express Runtime 的安装程序中包含下列构件:
- 解决方案组装工具包,其中包含 Express Runtime Developer 和 Deployment Wizard
- IBM 中间件映像
- IBM Rational Web Developer V6.0
- Express Runtime 控制台
- 产品文档和示例程序。
第 3 步由两个活动组成:
- 使用 Express Runtime Developer 工具将您的应用程序同所需的 IBM 中间件进行集成。这将生成包含您的应用程序和全部所需中间件的一个解决方案。
- 然后,可将该解决方案保存在 CD、DVD 或登台服务器上,以供将来部署到客户环境中。
第 4 步:使用 Deployment Wizard 部署存储的解决方案。
第 5 步:通过基于 Web 的 Express Runtime 控制台对 IBM 中间件进行管理,该控制台可提供对 WebSphere Application Server - Express 和 DB2 UDB Express 或 Informix Dynamic Server 以及 HTTP Server 的全面管理功能。
我们的目标并不是要创建有价值的应用程序,而只是为了得到一个经过完整打包的解决方案,即在安装时就已经集成了其所需的中间件。
我们将从一个已完成的 EJB 应用程序开始演练整个过程。在本文中,我们将使用一个名为 Personal Budget Analysis (PBA) 的 EJB 应用程序作为示例。(该应用程序位于下载 ZIP 文件中的 PersonalBudget.ear 内,有关创建该应用程序的步骤不在本文的范围之内。)
要使用该应用程序创建一个打包的解决方案,请执行以下步骤:
- 我们将使用三个中间件来运行此应用程序:WebSphere Application Server – Express、DB2 UDB Express 和 HTTP Server。
- 我们将使用 Express Runtime Developer 来将 PBA 应用程序和这些中间件打包到一个解决方案中。
- 我们将使用 Deployment Wizard 来将该解决方案部署到客户环境中。
以下为我们将要使用的示例应用程序的一些背景信息。
从业务功能的角度来看,PBA 应用程序用于收集收入和支出数据并生成收入-支出对比图表。该应用程序采用 IBM Rational Application Developer V6.0 和 UML 编辑器作为开发工具进行开发,其中包含 JSP、servlet、容器管理的持久性 (CMP) 实体 Bean、会话 Facade 和服务数据对象。
图 2 显示了我们的应用程序中所使用的 CMP 实体 Bean 之间的关系图。
图 2. CMP 实体 Bean 关系图
每个单独用户获得收入并产生支出:
- 收入部分包括工资收入和非工资收入。
- 支出部分包括日常支出、贷款偿还以及保险支付。
在此模型中,我们使用一个名为 PBUser 的实体 Bean 来代表 Personal Budget 数据库中的一个用户。PBUser 对下列实体 Bean 具有一对一的关系引用:
- Income
- HouseholdExpense
- BorrowingAndLoan
- InsurancePayment.
图 3 是描述实体及其相互关系的类图。(该类图使用 Rational Application Developer 中的 UML 可视编辑器进行创建。)
图 3. PBA 应用程序类图
该类图显示了每个实体 Bean 的属性。您还将注意到一个名为 PBUserFacade 的会话 Facade Bean,其中包含创建、更新和删除 (CRUD) API 以管理 PBUser SDO 的实例,后者通过值对象属性被添加到 Facade。它所创建的方法(如图 3 所示)包括:getAllPBUserObjects、getPBUserByKey、createPBUser、updatePBUser 和 deletePBUser。该会话 Bean 将由 PBudgetWeb 模块中的一个 ActionServlet 用于同 PBUser 实体 Bean 进行交互,以管理用户实例及其相关实体 Bean 的实例。
PBA 应用程序的典型处理流程如下:
- 新用户通过完成用户注册页面在系统中进行注册。
- 注册用户通过用户 ID 和密码登录 PBA 系统。
- 注册用户可执行下列个人预算功能之一:
- 查看 Income 和 Expenditure Budgeting 摘要页面(如图 4)。
- 查看或输入个人每月收入的详细信息(如图 5)。
- 查看或输入每月日常支出的详细信息(如图 6)。
- 查看或输入每月贷款偿还支出的详细信息(如图 7)。
- 查看或输入每月保险支付支出的详细信息(如图 8)。
图 4. Personal Income 和 Expenditure Budgeting 摘要页面
图 5. 日常收入详细信息
图 6. 每月日常支出详细信息
图 7. 每月贷款偿还支出详细信息
图 8. 每月保险支付支出详细信息
在组装应用程序之前,我们需要了解在 Express Runtime 环境中使用的一些重要术语:
-
包装 (Wrapper) 可视为负责控制组件部署执行流程的“工作流”或“控制器”。有两种类型的包装:
- 应用程序包装
- 解决方案包装。
-
应用程序是一个整体解决方案中的某个组件,它可以是中间件或实际的应用程序。例如,我们的 PBA 应用程序可以视为在 Express Runtime 环境中的一个应用程序包装。DB2 UDB Express 是支持 PBA 应用程序所需的组件之一,它也是一个应用程序包装。
在 Express Runtime Developer 工具中提供了一些安装即用的示例应用程序包装,您可将其用作自己的应用程序包装的模板。每个应用程序包装中都包含特定于应用程序的信息,例如应用程序的名称和版本、应用程序所使用的用户程序等。应用程序包装信息保存在一个名为 application.axml 的 XML 文件中,该文件位于 Express Runtime Developer 工具的 src 文件夹中,如图 9 所示。
图 9. 应用程序包装文件 application.axml 位于 src 文件夹中
-
在您完成应用程序包装的开发之后,您可将所需的全部应用程序包装打包成单个的解决方案包装,解决方案包装由一个或多个应用程序包装组成。
Express Runtime Developer 工具提供了一些安装即用的示例解决方案包装,每个包装中包含特定于解决方案的信息,包括解决方案的 ID、版本、支持的语言等。解决方案包装信息保存在一个名为 solution.axml 的 XML 文件中,该文件位于 Express Runtime Developer 工具的 src 文件夹中,如图 10 所示。
图 10. 解决方案包装 solution.sxml 位于 src 文件夹中
我们将要开发的解决方案 PBASolution 由五个应用程序包装组成:
- PBA
- WebSphere Application Server - Express
- DB2 UDB Express
- HTTP Server
- Web 服务器插件。
由于 WebSphere Application Server – Express、DB2 UDB Express、HTTP Server 和 Web 服务器插件是 Express Runtime 工具中提供的示例应用程序包装的组成部分,因此我们只需要开发 PBA 应用程序包装。然后,所有这些应用程序包装将一起被打包成一个解决方案包装,如图 11 所示。
图 11. PBASolution 的概念视图
在了解包装及其结构之后,我们将进入 PBA 应用程序包装开发的下一阶段。同时还将介绍更多的术语。
为开发我们的 PBA 应用程序包装,我们将执行下列常规任务,在接下来的部分中我们将分别对这些任务进行详细介绍:
- 创建 PBA 应用程序项目
- 编辑应用程序包装
- 创建 Budget.prop 响应文件
- 创建 PBA 用户程序
- 添加 wsadmin 和 DB2 脚本
- 完成 PBA 应用程序项目
- 创建 PBASolution 解决方案项目
- 编辑 Solution Wrapper Editor
- 完成 PBASolution 解决方案项目
-
选择 Start => Programs => IBM Express Runtime 2.1 => Express Runtime Developer 以启动 Express Runtime Developer。现在,您将进入 Express Runtime Developer 环境中。
-
选择 File => New => Express Runtime Application Project 以创建一个新的应用程序项目。
-
在接下来的对话框中,在 Project name 字段中输入
PBA并选择 Next。 -
接下来,为下列值输入或选择对应的值:
- Application ID:PBA
- Version: 1.0
- Installation time (minutes): 30
- Operating system:Windows:
- Default language:English
- Wrapper file name:application.axml
选择 Finish 以完成创建 PBA 应用程序项目。
-
从 Package Explorer 面板中,您将看到 PBA 应用成项目已经创建,并在右边的窗格中显示 Application Wrapper Editor Welcome 页面(如图 12)。
图 12. Application Wrapper Editor Welcome 页面
接下来,我们将使用 Application Wrapper Editor 来编辑 PBA 应用程序包装。
General 选项卡显示了您在上面指定的详细信息,其中包括应用程序项目的常规信息。您可使用该页面来选择相应的选项;由于我们的示例应用程序仅运行在 Windows® 操作系统上并且在支持的语言中我们只选择了“English”,因此您只会看到这些选项已被选中。
Programs 选项卡为您提供有关任何用户自定义程序的信息,这些信息可用于:
- 执行 IBM 中间件和 ISV 应用程序的预安装、安装和后期安装。
- 执行采用 Jython 或 JACL 语言编写的 wsadmin 脚本以配置 WebSphere Application Server 环境。
- 执行 DB2 脚本以创建数据库或表,并在表中填充数据。
(在 Express Runtime 中包含的 Rational Web Developer 可用于开发基于 Java 的用户程序。)
您可开发四种类型的用户程序以供 Express Runtime 使用,用户程序类型是按程序在部署过程中的运行位置进行区分的,包括:
-
预部署检查器 (predeployment checker) 在入口程序、主程序或出口程序之前运行,用于检查目标计算机是否满足特定条件,例如是否具有足够的磁盘空间、是否存在冲突的软件、是否存在应用程序的早期版本等等。
-
入口程序 (entry program) 通常用于在主安装程序运行之前执行所需的任何预配置或预安装。
-
主程序 (main program) 为安装程序,执行将您的应用程序安装到目标计算机上的过程。
-
出口程序 (exit program) 通常用于在产品安装之后执行所需的任何后期配置,可用于确定解决方案的安装是否成功。
我们的示例应用程序项目中将使用两种用户程序:即预部署检查器和主程序。预部署检查器将用于确定目标计算机是否具备所需的先决条件,主程序则执行 PBA 应用程序的安装,其中包括执行 DB2 脚本、创建 DB2 数据库和表、在 WebSphere Application Server – Express 上安装 PBA 应用程序以及调用 wsadmin 脚本以配置 WebSphere Application Server - Express 环境资源。
这时您可能会注意到在 PBA 应用程序项目中存在一个错误。这是因为每个应用程序都需要一个主程序,而在缺省情况下并没有初始关联的用户程序。在您完成主程序的定义之后,该错误将会消失。
要定义我们所需的两个应用程序,请执行以下步骤:
-
选择 Programs 选项卡以进入 Main Program 页面。
-
在 Basic Program Configuration 部分中,确保将 Program type 字段设置成 Java program。
-
在 Program 字段中,输入
com.budget.PBAWinMain。这会将 PBAWinMain 类关联为主程序。 -
在 Program Arguments 部分中,分别在 Response file 字段和 Log file 字段中输入
Budget.prop和PBAWinMain.log。 -
在 Arguments 字段中,选择 Add,从 Add Argument 窗口中选择 Response file name,然后单击 Next。
-
确保将 Response file name 字段设置成 Budget.prop,然后单击 Finish。PBAWinMain 程序会将 Budget.prop 作为输入参数。
现在,我们已经完成主程序的定义,如图 13 所示。接下来,我们将定义预部署检查器用户程序。
图 13. 完成的主程序定义
-
切换至 Predeployment Checker 页面并选中 Enable predeployment。
-
确保在 Set Program 窗口中选择 Java program 作为 Program type 字段值,并单击 Next。
-
在 Specify the main class 窗口中,在 Main class 字段中输入
com.budget.PBAWinPDC并单击 Finish。 -
在 User Programs Information 窗口上的 Program Arguments 部分中,分别在 Response file 字段和 Log file name 中输入
Budget.prop和PBAWinPDC.log。 -
在 Arguments 字段中,单击 Add。
-
从 Add Argument 窗口中,选择 Response file name 并单击 Next。
-
确保将 Response file name 字段设置成 Budget.prop 并单击 Finish。
-
要保存我们到现在为止所作的更改,请从主菜单中选择 File => Save。
现在,我们已经完成对第二个用户程序——预部署检查器的定义,如图 14。
图 14. 完成的预部署检查器定义
Variables 选项卡允许您配置在部署应用程序时所需的变量。对于我们的示例应用程序项目,需要配置两个变量 DB2UserId 和 DB2UserPassword。我们将首先添加这两个变量,然后为它们设置以下验证规则(您可根据需要添加更多的变量):
- Valid characters:@#$_abcdefghijklmnopqrstuvwxyz0123456789
- Invalid values:ADMINS, USERS
- Invalid prefixes:SQL, _, IBM
要配置这些变量,请执行以下步骤:
-
在 Application Variables 部分中,选择 Add。
-
选择 String Variable 作为 Variable type 字段值。在 Variable name 字段中输入
DB2UserId,并在 Variable description 字段中输入DB2 Administrator User ID。单击 Finish。 -
现在,您将看到名为 DB2UserId 的变量已被添加到 Application Variables 列表中。
-
在窗口底部的 Variable Validation Configuration 部分中,定义下列内容:
- Default value:db2admin
- Minimum length: 2
- Maximum length: 30
-
确保选择 Specific characters 选项并单击 Next。
-
在接下来的窗口中,在 Valid string 字段中输入:
@#$_abcdefghijklmnopqrstuvwxyz0123456789并单击 Finish。 -
再次选择 Validation rules 字段旁的 Add 以定义第二条验证规则。
-
在 Add a variable validation rule 窗口中,选择 Specify an invalid value 并单击 Next。在接下来的窗口中,保留 Complete String 的缺省选项,然后单击 Next。
-
在 Invalid string 字段中输入
ADMINS并单击 Finish。 -
重复步骤 22 至 24 以为 USERS 添加有效的字符串。
-
要定义有效的前缀,再次单击 Validation rules 字段旁的 Add。
-
在 Add a variable validation rule 窗口中,选择 Specify an invalid value,然后单击 Next。
-
在接下来的窗口中,确保选中 Prefix option,然后单击 Next。
-
在 Invalid prefix 字段中输入
SQL并单击 Finish。 -
重复步骤 27 至 29 以为 "_" 和 "IBM" 添加有效前缀。
您可能会注意到一个名为 Variable Associations Configuration 的部分。该选项用于执行变量关联,即通过在响应文件(属性文件)中包含变量值使其可供用户程序使用。我们将在接下来的系列步骤中执行对 DB2UserId 的变量关联,即通过 Budget.prop 属性文件使 DB2UserId 的值可供用户程序使用。
有几种不同的关联类型可供使用。在我们的示例中将使用属性关联。所有基于 Java 的用户程序都可通过这种关联类型来访问变量。
-
在 Variable Associations Configuration 部分中单击 Add。
-
在 Add Association 窗口中,选择 Properties association,然后单击 Next。
-
在 Keyword 字段中输入
DB2UserId并单击 Finish。 -
现在 DB2UserId 将出现在 Variable Associations Configuration 列表中。
-
从主菜单中选择 File => Save 以保存更改。
现在,我们已经完成对第一个变量 DB2UserId 的定义,如图 15 所示。接下来,我们将定义另一个变量。
图 15. 完成的变量 DB2UserId 定义
我们要添加的第二个变量为 DB2UserPassword,其中包含以下验证规则:
- Valid characters:@#$_abcdefghijklmnopqrstuvwxyz0123456789
- Invalid values: ADMINS, USERS
- Invalid prefixes: SQL, _, IBM
要添加 DB2UserPassword 变量,请执行以下步骤:
-
在 Application Variables 部分中,单击 Add。
-
选择 Password Variable 作为 Variable type 字段值。在 Variable name 字段中输入
DB2UserPassword,并在 Variable description 字段中输入DB2 Administrator User Password。 -
现在 DB2UserPassword 将被添加到 Application Variables 列表中。
-
在 Variable Validation Configuration 部分中,定义下列值:
- Minimum length: 2
- Maximum length: 30
-
按照与 DB2UserId 相同的步骤,为 DB2UserPassword 添加验证规则。
-
在 Variable Associations Configuration 部分中单击 Add 以为 DB2UserPassword 定义变量关联。
-
在 Add Association 窗口中,选择 Properties association,然后单击 Next。
-
在 Keyword 字段中输入
DB2UserPassword并单击 Finish。 -
现在 DB2UserPassword 将出现在 Variable Associations Configuration 列表中。
-
从主菜单中选择 File => Save 以保存更改。
完成的变量 DB2UserPassword 定义如图 16 所示。
图 16. 完成的变量 DB2UserPassword 定义
Files 选项卡允许您定义安装应用程序所需的全部文件。在我们完成创建所需的全部文件(接下来将介绍)之后,将更新此选项卡。
此时,您可能会注意到在 PBA 应用程序项目中存在一个错误。这是因为我们在上面指定的属性文件尚未创建。属性文件中包含将由用户程序在运行时共享和使用的参数。在我们的示例应用程序中所使用的 Budget.prop 属性文件将包含预部署程序和主程序所使用的全部参数。
要创建 Budget.prop 属性文件,请执行以下步骤:
-
从 Package Explorer 面板中,展开 src 文件夹。
-
右键单击 PBA 文件夹并选择 New => File。
-
在 File name 字段中输入
Budget.prop并单击 Finish。 -
您将看到 Budget.prop 文件已经创建。复制并粘贴 Budget.prop 文件的内容,该文件位于本文附带的下载 zip 文件中。
-
按 Ctrl-S 以保存您的更改。
我们的 Budget.prop 属性文件(也称为响应文件)已经创建,如图 17 所示。
在 Budget.prop 文件中,某些参数(例如 DB2.UserID 和 DB2.UserPW)并未定义值。通过我们在第 2 步中对 DB2UserId 和 DB2UserPassword 进行的变量关联设置,可以在运行时提供这些变量值。例如,如果某个用户分别输入 db2admin 和 db2admin 作为 DB2 的用户 ID 和密码,则这些值将被包含在响应文件中,并同时可供预部署程序和主程序用户程序使用。
图 17. Budget.prop 响应文件
我们在上面指定了下列程序作为示例应用程序中的用户程序:
- Predeployment checker:PBAWinPDC
- Main program:PBAWinMain
PBAWinPDC.java 将:
- 验证 DB2 Express 和 WebSphere Application Server - Express 是否已安装在目标计算机上。
- 如果已安装,检查器随后将确定 PBA 应用程序是否已安装在 WebSphere Application Server – Express 上。
- 如果应用程序尚未安装,则将调用 PBAWinMain.java;如果已经安装,则不会调用主程序。
除了这两个用户程序之外,我们的 PBA 应用程序还包含下列 Java 文件:
- PBAWinCommon.java 包含 PBAWinPDC.java 和 PBAWinMain.java 中所引用的常量和方法。
- PBAMessagesNLS.java 用于定义部署期间的异常处理消息。
- PBANLSKeys.java 包含 PBAWinPDC.java 和 PBAWinMain.java 共同使用的资源束 (resource bundle) 的静态键 (static key)。这里定义的静态键将由 PBAMessagesNLS.java 用于在部署期间查找异常处理的消息。
为简化用户程序的创建,可根据客户需求自定义 Express Runtime Developer 工具提供的示例包装。
要创建预部署程序,请执行以下步骤:
-
从 Package Explorer 中,右键单击 src/PBA/userPrograms 文件夹并选择 New => Class。
-
在 New Java Class 面板中,输入或选择下列值:
- Package:com.budget
- Name:PBAWinPDC
- Superclass:com.ibm.jsdt.support.SupportWindowsBase
在 Superclass Selection 窗口中,在 Choose a type 字段中输入
SupportWindowsBase,在 Which method stubs would you like to create 字段中选择 public static void main(String[] args)。 -
现在,PBAWinPDC.java 文件已经创建。使用下载 ZIP 文件所附带的 PBAWinPBC.java 中的源代码替换文件 PBAWinPDC.java 的内容。按 Ctrl-S 以保存您的更改。
-
重复这些步骤,使用指定的值以及下载 ZIP 文件中的相关源代码,从而创建下列 Java 文件:
PBAWinMain.java 文件:
- Package:com.budget
- Name:PBAWinMain
- Superclass:com.ibm.jsdt.support.SupportWindowsBase
PBAWinCommon.java:
- Package:com.budget
- Name:PBAWinCommon
- Superclass:com.ibm.jsdt.support.SupportWindowsBase
PBAMessagesNLS.java:
- Package:com.budget
- Name:PBAMessagesNLS
- Superclass:com.ibm.jsdt.support.SupportWindowsBase
PBANLSKeys.java:
- Package:com.budget
- Name:PBANLSKeys
- Superclass:com.ibm.jsdt.support.SupportWindowsBase
现在,您在 com.budget 包下的 src/PBA/userPrograms 文件夹内具有五个 Java 程序,如图 18 所示。
图 18. src/PBA/userPrograms 文件夹中的五个用户程序
在我们的 Java 程序中广泛使用了 SupportFramework 内的部分 API。例如以下来自 PBAWinMain.java 的代码片段:
import com.ibm.jsdt.support.SupportWindowsBase;
.....
private SupportWindowsHelper ivHelper = null;
.....
private int runWebSphereScript() {
int rc = SUCCESS;
// Get the WAS script to be run
// The script name is specified in the application properties file – PBA.WASscript
.....
String unpackedDir = ivHelper.getUnpackedDir(this);
.....
String shortWasProfileBinDir = ivHelper.getWindowsShortPath(this)) {
.....
|
ivHelper 对象为 SupportWindowsHelper 类型,它是 SupportFramework API 的一部分。调用 getUnpackedDir 方法可返回 PBA 应用程序的解包目录。另一个名为 getWindowsShortPath 的方法,可返回给定路径的 Windows 短名路径。有关 SupportFramework 的说明,可在 Express Runtime 产品说明的以下路径中找到:<ER_install_dir>\Runtime21\SolutionEnabler\Support_Framework\index.html。
缺省情况下,所有的 Java 程序将被自动编译。成功编译之后将产生类文件。由编译器检测到的错误将在 Express Runtime Developer 工具中作为警告或错误进行报告。
由于我们具有五个 Java 程序,因此所有五个类文件的缺省构建路径位于 <ER_install_dir>\Runtime21\SolutionEnabler\workspace\PBA\bin\com\budget 目录。此外,您还可通过 Navigator 面板找到这些文件,如图 19 所示。
图 19. 在 Navigator 面板上,类文件位于 bin\com\budget 文件夹中
现在,我们将添加用 JACL 编写的 wsadmin 脚本以及 DB2 脚本,以供用户程序使用。这样,我们就完成了所需的全部用户程序。JACL 脚本将用于配置 WebSphere Application Server - Express 环境,包括设置到数据库的 JDBC 连接、创建数据源等等。DB2 脚本则用于创建支持 PBA 应用程序所需的数据库和表。
我们的 PBA 示例应用程序所需的脚本包括:
-
JACL 脚本:
-
CheckAppInstall.jacl
该脚本由 PBAWinPDC.java 进行调用,用以检查 PBA 应用程序是否已安装在系统上。
-
EditMap.jacl
ViewApp.jacl在 WebSphere Application Server – Express 中,应用程序的每个模块均可映射到一个或多个目标服务器。目标服务器可以是一个应用服务器、应用服务器集群或一个 Web 服务器。这些模块可以安装在相同的应用服务器上或分布在多个应用服务器中。选定的 Web 服务器将作为发送到您的应用程序的请求的路由器。
我们的 PBA 应用程序包含两个模块 PBudgetEJB 和 PBudgetWeb。EditMap.jacl 和 ViewApp.jacl 用于将这两个模块映射到下列服务器:
WebSphere:cell=<Computer_Name>Node01Cell, node=webserver1_node, server=webserver1 WebSphere:cell=<Computer_Name>Node01Cell, node=<Computer_Name>Node01, server=server1
<Computer_Name> 是您在部署 PBA 应用程序时输入的目标计算机名称。
-
WebSphereScript.jacl
WebSphereConfigProcs.jacl
SetupProcs.jaclWebSphereScript.jacl 调用 WebSphereConfigProcs.jacl 和 SetupProcs.jacl 以完成下列操作:
- 安装 PBA 应用程序。
- 创建 JDBC 提供程序。
- 创建 DB2 数据源。
- 为运行时的数据库身份验证创建 JAAS 身份验证别名。
SetupProcs.jacl 用于设置所需的全部变量,WebSphereConfigProcs.jacl 中则包含以上任务的实际实现。
-
CheckAppInstall.jacl
-
DB2 脚本:
- DB2Script.bat
-
CreateTables.ddl
这些脚本用于创建 DB2 数据库和表。
所有这些脚本均取自 IRU2_1_1SampleWin 应用程序项目并针对我们的 PBA 应用程序进行了自定义。这些脚本的定制版本可从下载 ZIP 文件中获得。
图 20 显示了安装 PBA 应用程序所需的全部组件。
图 20. 安装 PBA 应用程序所需的全部组件的完整视图
现在,我们将在 PBA 应用程序项目中创建一个文件夹来保存安装 PBA 应用程序所需的全部文件:
-
将下载文件中的 PersonalBudget.ear 以及所有脚本复制到 C: 目录下新建的名为 PBA 的文件夹。
-
从 Package Explorer 面板中,展开 PBA 文件夹。右键单击 src/PBA/userPrograms 并选择 New => Folder。
-
在 Folder name 字段中输入
PBA_ScriptsDir并单击 Finish。 -
将图 21 中所示的所有脚本(不包括 PersonalBudget.ear)复制到 PBA_ScriptsDir 文件夹。您可通过在 Windows 资源管理器将这些文件拖到 Developer's Package Explorer 中新建的 PBA_ScriptsDir 文件夹来完成复制操作。PBA_ScriptsDir 应类似于图 21 中所示的结构。
图 21. 预部署检查器和主程序所需的脚本文件
接下来,我们将回到 Application Wrapper Editor 中来添加 PBA 应用程序所需的文件。
-
切换至 Files 选项卡并单击 Software Image Files 文件下的 Add 按钮。如果您得到一个弹出窗口并提示软件映像文件根目录未设置,请选择 Yes。浏览至 C:\PBA 目录并单击 OK。
-
在 Add Files 窗口中,从列表中选择 PersonalBudget.ear 并单击 Finish。现在 C:\PBA 已被设置成源目录,并且 PersonalBudget.ear 已被添加到文件列表中。
-
按 Ctrl-S 以保存您的更改。
图 22. 运行主安装程序所需的 PersonalBudget.ear 已被添加到 Software Image Files 部分
最后一步是执行构建 PBA 应用程序包装的任务:
-
从 Express Runtime Explorer 中,右键单击 PBA 文件夹并选择 Generate Application。
-
一旦应用程序成功生成之后,系统将显示 Application Generation Successful 消息。单击 OK。(该消息还将出现在控制台窗口中。)在 <ER_workspace_dir>\SolutionEnabler\workspace\PBA\bin\PBA 文件夹中生成二进制文件 PBA_win.ser。
-
接下来,我们将生成 PBA 的部署包。右键单击 PBA 文件夹并选择 Generate Deployment Packages。系统将显示一个弹出窗口并提示部署包已成功生成。单击 OK。这将在 <ER_workspace_dir>\SolutionEnabler\workspace\IRU_common_resources\mediaJars> 文件夹中生成 JAR 文件 pba.xx.jar。应用程序 PersonalBudget.ear 被打包到该 JAR 文件中。
PBA 应用程序包装的创建到此完成。由于 Express Runtime 安装程序中附带了其余的应用程序包装,因此接下来我们将创建一个解决方案包装来将全部所需的应用程序包装打包在一起。
-
从 Express Runtime Developer 中,选择 File => New => Solution Project,以创建一个新的解决方案项目。
-
在 Project name 字段中输入
PBASolution并单击 Next。 -
在接下来的对话框中,输入下列值并单击 Finish 以完成创建 PBASolution 解决方案项目:
- Solution ID:PBASolution
- Solution Title:Personal Budget Analysis Solution
- Default Language:English
- Wrapper file name:solution.sxml
现在,您将从 Express Runtime Explorer 面板中看到 PBASolution 解决方案项目已经创建,并在右边的窗格中显示 Solution Wrapper Editor Welcome 页面,如图 23 所示。
图 23. Solution Wrapper Editor Welcome 页面
在这一步中,我们将使用 Solution Wrapper Editor 来编辑 PBASolution 解决方案包装:
-
General 选项卡中提供了您在上面指定的详细信息,其中包括解决方案项目的常规信息。单击 General 选项卡并在 Basic Solution Configuration 部分中输入下列值:
- ID:PBASolution
- Title:Personal Budget Analysis Solution
- Version: 1.0
-
在 Welcome Screen Configuration 部分中输入下列值:
- Welcome screen title:Personal Budget Analysis (PBA) V1.0
- Welcome screen text:
This solution will deploy Personal Budget Analysis (PBA) V1.0 and three IBM middleware components which consist of: <br>- WebSphere Application Server - Express Edition V6.0 <br>- DB2 Universal Database Express Edition V8.2 <br>- IBM HTTP Server V6.0. - Version: 1.0
Tasks 选项卡允许您定义安装解决方案所需的应用程序。在我们的示例中,解决方案包含下列应用程序包装:
- PBA
- WebSphere Application Server - Express
- DB2 Express
- HTTP Server
- Web 服务器插件。
要将以上任务添加到 PBASolution 中,请执行以下步骤:
-
从 Solution Tasks 中,选择 Add。
-
在 Add 窗口中,选择 Create an empty task group 并单击 Next。
-
在 Task group title 字段中输入
Personal Budget Analysis,并在 Task group prompt 中输入Select the platform where Personal Budget Analysis application and middleware should be installed。单击 Finish。 -
右键单击您刚刚创建的 Task Group,并选择 Add applications。
-
在 Add Applications 窗口中,设置下列值:
- Parent task group:Personal Budget Analysis
- Task description:PBA and Middleware for Windows
- Operating System:Windows
-
选择 PBA 所需的全部应用程序,如图 24 所示,然后单击 Finish。
图 24. 需添加到 Install Task 中的应用程序列表
-
您现在在 Personal Budget Analysis Task Group 中具有五个应用程序。使用 Up 和 Down 按钮按以下顺序重新对任务进行排序:
- Application:IRU2_1_1DB2Express8_2Win
- Application:IRU2_1_1IHS6_0Win
- Application:IRU2_1_1WASExpress6_0Win
- Application:IRU2_1_1WebServerPluginForWAS6_0Win
- Application:PBA
如果您要使用 Express Runtime 控制台来管理中间件,则需要将每个中间件的管理扩展组件添加到您的 Install Task 中。所有三个 IBM 中间件的管理扩展组件均附带在 Express Runtime 安装程序中。(在本次练习中,我们不使用 Express Runtime 控制台。)
- 在 PBASolution 中存在多个应用程序需要使用 DB2 用户 ID 和密码变量。为避免在部署期间用户多次提供相同的信息,我们可以在应用程序间共享这些变量:
-
从 Solution Tasks 列表中选择 Application:IRU2_1_1DB2Express8_2Win ,然后在 Overridden application variables 部分中选择 Add 按钮。
-
在 Override Application Variables 窗口中,从 Variables 列表中选择 username 并单击 Next。设置下列值:
- Appearance:Editable(缺省值)
- Behavior:Share the value of username with other variables
- Shared as:DB2AdminUsernameWin
-
在 Shared Variable Value Configuration 部分中,按照上面列出的步骤为用户名添加验证要求,如图 25 所示。
图 25. 为用户名指定验证要求
-
从 Solution Tasks 列表中选择 Application:IRU2_1_1DB2Express8_2Win 并在 Overridden application variables 部分中单击 Add 按钮。
-
在 Override Application Variables 窗口中,从 Variables 列表中选择 password 并单击 Next。设置下列值:
- Appearance:Editable(缺省值)
- Behavior:Share the value of password with other variables
- Shared as:DB2AdminPasswordWin
-
在 Shared Variable Value Configuration 部分中,按照前面为用户名列出的相同步骤来为密码添加验证要求。
-
从 Solution Tasks 列表中选择 Application:PBA ,在 Overridden application variables 部分中单击 Add 。
-
在 Override Application Variable 窗口中,从 Variables 列表中选择 DB2UserId 并单击 Next。设置下列值:
- Appearance:Editable(缺省值)
- Behavior:Share the value of DB2UserId with other variables
- Shared as:DB2AdminUsernameWin
-
在 Override Application Variable 窗口中,从 Variables 列表中选择 DB2UserPassword 并单击 Next。设置下列值:
- Appearance:Editable(缺省值)
- Behavior:Share the value of DB2UserPassword with other variables
- Shared as:DB2AdminPasswordWin
-
-
按 Ctrl-S 以保存您的更改。
最后一步是执行构建 PBASolution 解决方案包装的任务:
-
从 Express Runtime Explorer 中,右键单击 PBASolution 文件夹并选择 Generate Solution。
-
当解决方案成功生成之后,系统将显示 Solution Generation Successful 消息。单击 OK。(该消息还将出现在控制台窗口中。)
在 <ER_workspace_dir>\SolutionEnabler\workspace\PBASolution\bin 文件夹中生成二进制文件 PBASolution.ser。
现在,我们已完成了 PBASolution 解决方案包装的创建,其中包含 PBA 应用程序和全部所需的中间件。
PBASolution 现在已准备就绪可以进行测试。从 Package Explorer 中,右键单击 PBASolution 并选择 Test in Deployment Wizard。(此外,您还可使用 Deployment Wizard 来部署 PBASolution。选择 Start => Programs => IBM Express Runtime 2.1 => Deployment Wizard 以启动 Deployment Wizard。)
-
在 Deployment Wizard 中,选择 File => Open 并定位到 PBASolution.ser 文件。
-
系统将提示您选择要部署的任务。选择 Personal Budget Analysis (PBA),然后单击 Next。
-
在接下来的屏幕中,选择 Personal Budget Analysis and Middleware for Windows,然后单击 Next。
-
您需要提供 PBASolution 和中间件的部署目标服务器的主机名和 IP 地址。在本例中,我们会将 PBA 解决方案部署到构建该解决方案所在的同一计算机上,因此,您可在 Windows 命令行提示下输入 hostname 来获得计算机的主机名。
-
使用 Add 按钮将主机名和 IP 地址添加到选定的目标计算机列表中。单击 Test connections 按钮以查看 Deployment Wizard 是否能够连接到目标计算机。
-
在接下来的屏幕中,系统将提示您配置 DB2 Express 的参数。您需要输入 DB2 管理员用户 ID 和密码(在本次练习中,您可使用
db2admin作为 ID 和密码。)缺省情况下,DB2 Express 的安装目录将位于 C:\Program Files\IBM\SQLLIB。您可保留其余的参数。 -
后续页面将提示您为 HTTP Server、WebSphere Application Server – Express 和 Web 服务器插件提供配置参数信息,您可保留所有的缺省值。
(您将注意到在 Configure Parameters – PBA 页面中的 DB2 管理员 ID 和密码已经使用您在 Configure Parameters - DB2 Universal Database Express Edition 页面中的参数进行了填充。这是因为我们在前面覆盖了这些变量。因此,用户无需在 Deployment Wizard 中多次输入变量值。)
-
Summary 面板中提供了有关待部署的任务、目标计算机的主机名或 IP 地址以及部署所有任务估计花费时间的信息。按下 Deploy All 按钮以启动 PBA 解决方案的部署操作。
-
当系统询问文件位置时,选择 C:\PBA。最后页面中的状态栏将显示 PBASolution 的部署进度,如图 26 所示。
图 26. PBASolution 部署正在进行
-
您可通过单击 Master log 按钮来检查 Deployment Wizard 在此过程中产生的消息,以查看每个组件的安装是否成功。此外,您还可在以下位置查看到同一文件:<ER_install_dir>\SolutionEnabler\logs\IRU_DeploymentWizard.log。
-
当 PBA 和中间件的部署完成且无任何错误时,系统将显示类似于图 27 的屏幕。
图 27. 已成功部署 PBA 应用程序和三个中间件
您还可在 IRU_DeploymentWizard.log 文件中找到下列消息:
.... IRU03000: The deployment was successful for IBM DB2 Universal Database Express Edition for 8.2.3 .... IRU03000: The deployment was successful for IBM HTTP Server for Windows 6.0.2.0. .... IRU03000: The deployment was successful for IBM WebSphere Application Server - Express 6.0.2. .... IRU03000: The deployment was successful for IBM Web server plug-ins for IBM WebSphere Application Server for Windows 6.0.2.0. .... IRU03000: The deployment was successful for PBA 1.0. .... IRU06172: Task1 in solution <ER_install_dir>\...\PBASolution.ser deployed successfully
-
选择 Start => Programs => IBM WebSphere => Application Server - Express v6 => Profiles => default => Administrative console,以启动 WebSphere Application 管理控制台。
-
使用任何用户 ID 登录到管理控制台。
-
从左边的导航栏中,选择 Servers => Application servers。现在,您将看到其中出现一个名为 server1 应用服务器。单击 Servers => web servers,您还可在管理控制台中查看所添加的 webserver1 的定义信息,如图 28 所示。
图 28. webserver1 的定义信息被添加到管理控制台
-
在控制台中,您可生成一个插件来更新 webserver1 的 plugin-cfg.xml 文件,传播一个插件按钮可允许您将插件配置信息传播到 webserver1。
-
要查看 PBA 应用程序是否已安装,请选择 Applications => Enterprise Applications。您将看到 PersonalBudget 已作为在 server1 上安装的应用程序之一出现在列表中。
-
Resources => JDBC Providers 链接为您提供有关 JDBC 提供程序 PBADB2Provider 的信息,该提供程序通过 PBA 应用程序包装中提供的 JACL 脚本在 WebSphere Application Server - Express 中进行配置。您可单击 PBADB2Provider 以查看其配置信息。
除 JDBC 提供程序之外,数据源和 JAAS 身份验证也通过 JACL 脚本进行配置。单击 Additional Properties 链接下的 Data sources 可找到有关数据源的信息。您将看到系统已经创建了名为 PBudget 且 JNDI 名称为 jdbc/PBudget 的数据源。从属性列表中,您可发现 Component-managed authentication alias 被设置成 DB2AuthAlias,PBUDGET 被设置为数据库名称等等。
-
您可从 Security => Global security 链接查看 JAAS 身份验证配置信息。在 Authentication 部分中,单击 JAAS Configuration => J2C Authentication data。您将在列表中发现 DB2AuthAlias,其用户 ID 为 db2admin。该 ID 和密码是在 PBA 解决方案部署期间当 Deployment Wizard 提示用户输入 DB2 用户 ID 和密码时所取得的,如图 29 所示。
图 29. 用于连接 DB2 Express 的用户 ID 和密码被设置在 JAAS 身份验证配置中
-
要测试 PBA 应用程序,打开浏览器并浏览该 URL
http://localhost:9080/PBA。这将执行应用程序,如图 30 所示。
图 30. Personal Budget Analysis 应用程序的主页面
如果您要进一步探索示例应用程序,可在上面获得有关 PBA 应用程序的业务功能的更多信息。
祝贺您!您已经成功地打包并部署了一个完整的解决方案,该解决方案由 WebSphere Application Server – Express、HTTP Server、DB2 Express 和一个 EJB 应用程序组成。
既然我们已将其打包成一个可工作的解决方案,那么我们也可以使用多种方法来将此解决方案分发到客户环境中:我们可为整个解决方案创建安装 CD 或 DVD,或者也可将解决方案放在登台服务器上。这两种方式都允许您在本地或远程部署解决方案。本地部署意味着解决方案将被部署到保存 PBASolution 以及全部所需文件的同一计算机上,远程部署则是指在远程的计算机上安装解决方案。
Express Runtime 还为您提供了一个名为 Express Runtime 控制台的工具,该工具为基于 Web 的单一性工具,您可通过它来执行 WebSphere Application Server - Express 和 DB2 UDB Express 或 Informix Dynamic Server 和 IBM HTTP Server 上的管理任务。
有关如何打包和部署您的解决方案,以及使用 Express Runtime 控制台以管理中间件的信息,请参阅参考资料。
在 IBM Express Runtime 出现之前,ISV 需要经历包括获得、安装、配置和支持多种不同的中间件的复杂过程,而这些中间件又通常来自不同的供应商并且具有不同的条款和条件以及许可结构等等。IBM Express Runtime 提供了一组内聚的中间件和单一环境,使 ISV 能以比以往任何时候都更加快速、高效的方式,将中间件同自己的应用程序一起作为单个程序包跨多个平台创建和部署。
| 名字 | 大小 | 下载方法 |
|---|---|---|
| IER_sampleapp.zip | 2.4 MB | FTP |
学习
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文。
-
Introduction to IBM Express Runtime V2.1 training and certification
-
IBM Express Runtime V2.1 Redbook -- SG24-6674-00
-
Virtual Innovation Center:Technical enablement, product education, documentation and support for IBM Express Runtime via e-mail or live chat
-
IBM Express Runtime product information
-
WebSphere Application Server - Express product information
-
DB2 Universal Database Express product information
-
Informix Dynamic Server Express product information
-
IBM HTTP Server product information
-
Rational Web Developer product information
获得产品和技术