- ·上一篇教程:了解 Cloudscape Network Server
- ·下一篇教程:通过 Web 访问企业数据
Portlet 对 DB2 数据的访问
|
级别: 初级 |
IBM Software Services for WebSphere
2004 年 7 月
在本文中,您将了解如何使用 WebSphere Application Portlet Builder (WPAI),来提供通过 WebSphere Portal Server 对 DB2 Universal Database 中数据的图形访问。您将学习 WPAI,学习如何连接到 DB2,然后一步步地了解如何图形化开发 portlet 应用程序,包括映射业务对象,这些业务对象提供了数据库中实体的直观视图。
WebSphere Application Portlet Builder 介绍
许多 DB2® 数据的用户没有能力或者不希望辛苦地使用 DB2 命令行来操作 DB2 数据。数据库的终端用户可能是企业用户,他们对 SQL 连碰都不想碰。然而,企业可能需要这些人能够在您的数据库中创建、读取、更新和删除数据。在本文中,您将了解如何使用 WebSphere® Application Portlet Builder (WPAI) 提供通过 WebSphere Portal Server 对 DB2 Universal Database™ 中数据的访问。
WPAI 由一系列 portlet 构建应用程序组成,即:
- PeopleSoft 8 Portlet Builder
- Siebel Portlet Builder
- SAP Portlet Builder
- JDBC Portlet Builder
- Portlet Builder for Domino
- WPCP Portlet Builder
所有这些 portlet 生成器本身就是 portlet,它们在 WebSphere Portal 中运行,使您可以创建新的 portlet,从而可以查看和修改来自许多数据提供者的信息,这些提供者包括 IBM DB2 Universal Database、Oracle、PeopleSoft、Siebel、SAP 和 Domino Server。在本文中,您将了解如何使用 JDBC Portlet Builder 创建与 DB2 交互作用的 portlet。
使用创建的 portlet,您将可以创建设置,在其中可以使用 Internet Explorer 6 或 Netscape 7 等 Web 浏览器来操作 DB2 数据。
WPAI 是一种允许通过基于 portlet 的工具快速开发 portlet 的架构。该架构由三种不同类型的组件组成:
- 后端应用程序适配器 — 这些适配器表示那些使用特定后端应用程序语言的代码,将统一界面引入架构的其他部分。其中一些适配器使用 JCA 连接器(例如,与 WPAI 一起发布的 PeopleSoft 和 Siebel JCA 连接器)。
- 运行时 Portlet(Portlet 模板)— 这些 portlet 理解由生成器创建的元数据,并与适配器通信,将数据提供给用户并将用户输入信息提交回目标后端。
- Portlet Builder(Application Portlet Builder)— 这些 portlet 允许用户历经类似于向导的界面来构建他们自己的后端访问 portlet。
体系结构
最好用图来描述本文中我们的环境的体系结构。我们将使用 JDBC Portlet Builder 创建 portlet。此 portlet 将在 WebSphere Portal 容器中运行。该 portlet 允许我们与 DB2 数据库交互作用对 DB2 表执行 CRUD (CREATE-READ-UPDATE-DELETE) 函数,在本文中,我们以 DB2 Sample 数据库中的 EMPLOYEE 表为例。WebSphere Application Server 中的 JDBC Data Source 资源条目会方便与数据库的通信。
图 1. 体系结构概述
如果 DB2 数据与 WebSphere Portal 未在同一物理计算机中,您需要使用 DB2 Configuration Assistant 本地编目 Sample 数据库。
先决条件和假定
要获得本文中描述的好处,需要安装 WebSphere Portal 5。JDBC Portlet Builder 还运行在 WebSphere Portal Version 4.1 和 Version 4.2 中。我将假定您已经了解如何管理 WebSphere Application Server Version 5、WebSphere Portal Server Version 5 和 DB2 UDB Version 8。
注意,获得 WebSphere Portal 的一种便利方法是通过 developerWorks Subscription。
WebSphere Portal 5 附带安装了一个版本的 JDBC Portlet Builder。不幸的是,此版本有一些大家都已知的问题。因此,需要卸载与 WebSphere Portal 一起提供的 JDBC Portlet Builder。 为此,需要以具有 Portal 管理权限的用户登录到 Portal 中。使用 Administration 选项卡,然后选择 Portlets 下的 Manage Applications 选项(如下所示),卸载名为 BusinessObjectFrameworkStruts.war 和 BOBuilderPortlet.war 的 Web 模块。
图 2. 卸载与 WebSphere Portal 一起提供的 JDBC Portlet Builder 版本的 WAR 文件
与 DB2 连接
通过建立数据源,为使用 JDBC Portlet Builder 构建的 portlet 设置与 DB2 的通信。使用 WebSphere Administrative Console 配置数据源,默认情况下,使用以下 url 访问 WebSphere Administrative Console:http://<yourhostname>:9090/admin。
在控制台的 Task Navigation 框架中,展开 Resources 选项,然后选择 JDBC Providers。在 Work Area 框架中,选择希望的作用域(单元格、节点或服务器),然后单击 Apply。单击 New创建 JDBC 提供程序,指定 Name 为“DB2 JDBC Provider”。设置 db2java.zip 文件位置的属性类路径。此时,应该具有名为“DB2 JDBC Provider”的 JDBC 提供程序了,如 图 3所示。
图 3. 使用 DB2 JDBC 提供程序促进与 DB2 的通信
需要创建 J2C 身份验证数据条目以连接到我们的数据源。要设置此项,转至 Task Navigation 框架,然后选择 Security -> JAAS Configuration ->J2C Authentication Data。使用 New按钮创建身份验证条目,该条目包含有权访问 Sample 数据库的数据库用户的用户名和口令。 图 4显示了名为 db2admin 的身份验证数据条目的创建,其具有的用户 ID 为 Administrator。
图 4. 创建 J2C 身份验证数据条目
现在,返回 Task Navigation 框架,然后选择 Resources-> JDBC Providers。单击前面创建的 DB2 JDBC 提供程序条目。向下滚动到 Additional Properties 部分,然后单击 Data Sources。
图 5. 创建数据源条目
使用 New 按钮创建新的数据源。提供下列属性:
- Name:SampleDS
- JNDI Name:jdbc/sampleDS
选中该选项为容器管理持久性启用数据源。对于 Component-managed Authentication Alias 和 Container-managed Authentication Alias,选择表示前面创建的 J2C 身份验证数据条目的 db2admin 别名。完成以上操作后,就创建了名为 SampleDS 的新数据源,如 图 6中所示。
图 6. SampleDS 数据源
应该使用 Test Connection 功能来确保已经在 WebSphere Application Server 和 DB2 之间建立了正确的连接。
图 7. 测试 SampleDS 数据源
现在最好停止并重新启动 WebSphere Application Server 和 WebSphere Portal Server,从而可以识别新建立的 DB2 数据源。
我们将使用 Sample 数据库的 EMPLOYEE 表进行研究。JDBC Portlet Builder 要求目标表要有主键。注意,安装 Sample 数据库时,不会为 EMPLOYEE 表自动创建主键。要建立主键,可以使用 DB2 Command Line Processor 和下列 SQL 语法:
|
获取和安装 JDBC Portlet Builder
既然已经设置了 WebSphere Application Server 且创建了数据源来促进 WebSphere Portal 与 DB2 的通信,现在我们可以着手开始处理 Portal。
可以从 Portlet Catalog免费下载 JDBC Portlet Builder 的最新版本。解压缩下载的 zip 文件,其中是许多 WAR 文件。使用 Install 选项安装下列 WAR 文件:WPAIPortletBuilder50.war 和 WPAIDefaultTemplate50.war(请参见 图 8和 9)。
图 8. 安装 WPAI Portlet Builders (WPAIPortletBuilder50.war)
图 9. 安装 WPAI Default Runtime Template Portlet (WPAIDefaultTemplate50.war)
转至 My Portal->My Work-> Developers Area -> JDBC Builder。此页面是 JDBC Portlet Builder 的前一版本曾经所在的位置。因为卸载了与 Portal 一起提供的 JDBC Portlet Builder 版本,所以现在这里是空的。我们使用同一页面放置 JDBC Portlet Builder Portlet 新版本的实例。单击 Edit Page,然后单击 Add portlets 按钮。使用 Search Utility 找到 JDBC Portlet Builder Portlet,然后将其添加到页面中。添加了 portlet 后,单击 Done(请参见 图 10)。
图 10. 向 JDBC Builder 页面添加 JDBC Portlet Builder Portlet
应该看到显示有 JDBC Portlet Builder 及欢迎消息的 JDBC Builder 页面(请参见 图 11)。
图 11. JDBC Portlet Builder portlet 成功安装并添加到 JDBC Builder 页面中
业务对象的作用
JDBC Portlet Builder 允许您创建直接映射到数据库中的列的业务对象。例如我们假设有一个数据库表,其中包含大量的列,这些列由类似 l_nme 和 f_nme 这样的抽象名称组成。在现实世界中,这些名称可能分别表示“Last Name”和“First Name”。建立业务对象时,可以为 JDBC Portlet Builder 创建的 portlet 的终端用户提供更合适和可以理解的名称。还可以设计业务对象仅向用户显示其感兴趣的信息。我们将简要说明这些优点。
使用 JDBC Portlet Builder
现在我们可以使用 JDBC Portlet Builder 创建 portlet。单击 JDBC Portal Builder portlet 的 Configure 图标(扳手)。
图 12. 开始配置新的 portlet
在下一屏幕中,将要求您指定要连接的数据源的 JNDI 名称。指定名称“jdbc/sampleDS”,还指定数据库的用户名和口令,如 图 13所示。
图 13. 指定 portlet 的目标数据源
然后,单击 New portlet按钮开始创建新的 portlet。
图 14. 开始创建新的 portlet 的过程
在下一屏幕中,指定新的 portlet 的设置。指定 portlet 名称为“SampleJDBCPortlet”。指定槽名称为“SampleSlot”,并再次为数据库输入适当的用户名和口令。对于“Select a Template:”选项,指定模板“WPAI Default Runtime Templat”。输入了如下所示的参数后,单击 Next。
图 15. 指定 portlet 参数
接着,需要为 portlet 定义新的业务对象。如上所述,此业务对象将映射到数据库中的列数据值。单击 New business object按钮。
图 16. 定义新的业务对象
在下面的屏幕中,将提供您一个界面,允许您为指向的数据库指定模式名。还可以使用“Get list”功能查看模式中的所有表。
图 17. 将业务对象指向数据库中的表
继续操作并使用向导指向 EMPLOYEE 表,如 图 18所示。选择了 EMPLOYEE 表后,单击 OK。
图 18. 指定 Employee 表
在下一屏幕中,指定业务对象名称为“SampleBO”。选中“Search automatically”选项。注意您可以指定要配置的标记语言。因为我们最终面向标准 Web 浏览器,所以我们将选择 html。而且,还可以指定允许对业务对象进行的操作。默认情况下,允许搜索、创建、更新和删除操作。
图 19. 指定业务对象的名称和允许的操作
在下一窗口中,将看到 EMPLOYEE 表中的列。这里,可以单击要添加到业务对象的字段。仅选中 EMPNO、FIRSTNME、LASTNAME 和 MIDINIT 列。对于您已经看到的显示名称,我们可以提供更易于记忆的名称(分别为 Employee Number、First Name、Last Name 和 Middle Initial)。请参见下面的 图 20和 21。为业务对象指定了列映射后,单击 Next。
图 20. 映射列到业务对象字段
在下一屏幕中,可以指定字段在 portlet 中的显示顺序。还可以指定一次要显示的行数和列数。继续操作并保持默认值,然后单击 Finish。
图 21. 指定业务对象的显示属性
在下一屏幕中,通过在业务对象区域看到一个条目可以确认已经创建了 portlet。
图 22. 查看注册为新对象的业务对象
单击 OK。在下一屏幕中,应该看到已经创建了您命名为 SampleJDBCPortlet 的 portlet。
图 23. 使用 SampleJDBCPortlet 创建的 portlet 的列表
安装和运行 portlet
要使用刚刚创建的 portlet,需要将此 portlet 添加到一个页面中。要了解如何进行此操作,请参考 Information Center中的 WebSphere Portal 文档。总的来说,就是需要将 SampleJDBCPortlet 添加到一个页面中。
当在页面中查看该 portlet 时,将看到 PEOPLE 表中的前 20 行。特别是您将仅看到业务对象中我们允许的那些列。要查看或编辑行,仅需要单击想要更改的数据旁边的图标。如 图 24所示,我决定对 last name 为“KWAN”、first name 为“SALLY”的那一行进行操作。
图 24. 使用创建的 portlet 查看和编辑 PEOPLE 表中的数据
接着,应该看到显示所选条目的详细信息的页面。要对值进行操作,单击 Edit按钮。
图 25. 选择编辑特定业务对象
单击 Edit 后,将可以更改数据库记录的值。在 图 26中,将 “SALLY”的 last name 从“KWAN”改为“FEONA”。
图 26. 更改记录的值
单击 Update,要求确认更改。单击 OK确认。
图 27. 确认记录更改
此时,应该可以在 portlet 中看到数据的更改。
图 28. 在 portlet 中查看数据更改
从 DB2 命令行,使用查询 select NAME from EMPLOYEE where EMPNO =‘000030’ ,应该可以在 DB2 中看到发生相同更改。
图 29. 查看 DB2 中的更新
如果您能想起的话,前面我们曾将业务对象字段设置为可搜索。让我们测试一下构建的 portlet 的搜索功能。在 portlet 的上部,选择 Search按钮,如 图 30所示。
图 30. 测试搜索功能
输入搜索参数。我输入 last name 为“FEONA”(前面编辑的记录)。
图 31. 输入搜索条件
单击 Search后,应该看到想要查找的记录。
图 32. 搜索结果
性能考虑事项
前面创建了 JDBC 数据源来促进与 DB2 数据库的通信。数据源允许利用连接池。使用 WPAI 开发每个与 DB2 通信的 portlet 都将使用一个连接。如果同时使用许多 portlet ,需要考虑为数据源增加 WebSphere Application Server 中的连接池大小。
WML 支持
对于那些要使用普及性设备远程与其 DB2 数据库交互作用的人,WPAI 提供了 WML 标记支持来满足小配件喜爱人群的需要。需要说明的是目标设备必须支持 WML 1.1。将 WebSphere Portal 用作代理可以使用启用了 WAP 的设备与 DB2 数据库交互作用。我将在后续的 developerWorks DB2 文章中向您说明如何设置此操作。
安全性提示
很有可能您有许多 portlet 要访问 DB2,所以您可能考虑使用单点登录(通过 Portal Server Credential Vault 支持)允许用户仅需输入一次凭证。我将不深入研究此主题,但是请注意, portlet 可以使用在凭证保险库中找到的信息进行自动登录。
结束语
在本文中,我们仅仅涉及了 WebSphere Portal Application Integrator 广泛内容的表面。使您有机会了解如何使用 WPAI 的 JDBC Portlet Builder Portlet 创建 portlet,从而可以查看和编辑您的 DB2 数据库中的数据。 不过,您还可以使用 WPAI 创建可以对其他许多后端系统中的数据进行访问和操作的 portlet。例如,可以使用 WPAI 与 PeopleSoft、Siebel、SAP 和 Domino 交互作用。好处是不需要有这些不同系统的编程知识就可以连接到这些系统中。而且,还可以在 WML 标记表单中利用 WebSphere Portal 对普及性计算设备的特有支持。 使用 WPAI,可以有效地促进对不同系统中对企业至关重要的数据的远程操作。





