在本系列文章的 第 1 部分 中,我们介绍了如何使用 Notes/Domino 6 来集成 Amazon Web Service。我 们确信很多读者很想了解如何使用 J2EE 来创建类似的应用程序,因为 IBM 已经从技术方面做出了很多努力 。因此,在本文中,我们将介绍如何使用 J2EE 来重新创建在第一篇文章中构建的 Notes 应用程序,同时还 将介绍这种技术与 Domino 的不同。本文的目的是为 Domino 开发人员简要介绍如何可以使用 J2EE 采用一种 不同的方法来开发一个类似的 Amazon Web Service 应用程序。本文假设您是一名非常有经验的 Java 开发人 员。
首先,我们先来了解一下如何使用 Dreamweaver 和 JSP(JavaServer Page)来创建应用程序;这种技术 被用于最简单的 Web 应用程序,至于原因,我们会慢慢介绍。然后,我们将介绍如何使用 EJB(Entity JavaBeans)、JavaBeans 和 Struts 来创建应用程序,这种技术通常用于更加健壮、更复杂的 Web 应用程序 。
J2EE 技术和框架
在 J2EE 世界中有很多不同的技术和框架,例如 Cocoon(XML/XSLT)、Structs、ColdFusion MX、Java Server Faces,等等,它们都是在 J2EE 平台上运行的。当然,J2EE 平台允许您在运行 J2EE 的平台上使用 任何一种框架,这就为您提供了一个可以使用多种平台环境的承诺。
Domino 服务器也可以采用混合型的 J2EE/Domino 设计,使用 Domino 表单来显示用户界面,使用 Java servlet 来实现对表单的处理。这为表单处理提供了更多的灵活性,并且比纯粹的 Domino 应用程序具有更好 的性能,但是很多纯粹的 J2EE 开发人员可能会认为这种方式非常奇怪。
另外一种可以选择的 Domino/J2EE 混合架构将使用一台 J2EE 服务器(通常是 JSP,例如 Tomcat)来显 示用户界面,但使用 Domino 数据库来存储数据。这可以使用 Domino JSP 定制标签实现,在 LDD Today 概 述“Jeff Calow on new Web technologies in Domino 6” 中对此进行了讨论。另外,这种架构提供了比纯 粹的 Domino 应用程序更好的性能,但是大部分开发人员使用它是为了改善控制 Web 站点的图形化层次结构 的能力,因为 Domino 在自己的 Web 视图中并没有提供每个元素的位置。
与使用 Domino 创建的站点相比,这两种混合技术在性能方面的改善都不是很明显,但是它们都提供了一 种替代品,替代品需要的工作量比纯 J2EE 应用程序更少;而且对于 Domino 开发人员来说,通过这种可选技 术来体验 J2EE 技术也非常有帮助。我们将在本系列的第三篇文章中介绍使用 Lotus Domino Toolkit for WebSphere Studio 来组合使用 Domino/J2EE 技术的方法,以及如何使用此工具为 Notes 数据库中保存的 Amazon 书籍数据开发一个 Web UI。
什么是 J2EE?
J2EE 是一组标准的技术和 API 集,Sun Microsystems 将其定义为一台 J2EE 服务器成为兼容服务器之前 必须具备的一些需求。与 Web 开发前景有关的一些技术是 servlet、JSP、JavaBeans 和 EJB。
对于简单的 Web 应用程序来说,您可以使用 servlet 和 JSP。servlet 和 JSP 都受到 Apache Jakarta 项目的 Tomcat 引擎的支持。servlet 和 JSP 的效率比 Notes/Domino 代理高,因为它们只有在首次使用时 才需要加载;相比较而言,Java 代理在每次调用时都会重新进行加载,因此它们占用的 CPU 处理时间更多。 从 JSP 版本 1.1 开始,增加了 JSP 定制标签,您并不需要在其中编写 JSP 中的代码逻辑,因此您可以纯粹 将 JSP 作为一个表示层。
EJB 通常都是与 J2EE 应用程序相关的。它们提供了一种封装数据库访问和业务逻辑的方法,这样就可以 在多台服务器上实现分发了。在正确完成处理之后,数据库访问被隐藏到了业务逻辑对象之后,因此,那些使 用 JSP 的 Web 站点的开发人员并不知道如何组织数据库。
J2EE 强大功能的来源之一是它可以将一个层次划分为多个单独的服务器。虽然 Domino 可以运行数据库、 业务和 Web 服务器上的所有表示/UI 层,但 J2EE 可以将这三部分划分到不同的服务器上。另外,每个部分 都可以使用集群,这样就可以在层次级别上具有一些冗余。虽然您可以对 Domino 服务器采用集群,但是您并 不能非常精准或深入地进行这种聚集,因此一个精确定义的 J2EE 应用程序天生就比一个类似的 Domino 应用 程序范围更加广泛,因为您可以将其扩充到多台机器上。缺点是这种技术的开发成本更高并且更复杂。
使用 RDBMS 数据库
正如大部分 Domino 开发人员所知道的那样,将很多个字段放到一个表单中可以定义一个 Domino 数据库 。这种设计非常简单(也就是说,表单和视图的设计并不需要一个正式的设计过程),也可以使用一个正式的 过程进行设计;您可以任意添加字段,尤其是将某些字段从单值更改为多值。字段的大小并不需要提前指定, 不过您必须要知道字段大小的限定值。在创建表单之后,就可以用视图来简单地显示这些字段,其中包括那些 多值字段。
在 RDBMS(关系数据库管理系统)中,在最初的数据库设计上您需要更多的努力,因为修改表的结构是非 常痛苦的一件事情,主要是因为所有的外键链接和字段大小都必须提前声明。在某些情况中,您还需要删除表 以及表中的所有数据,修改数据库的设计,然后重新加载数据。
需要对多值字段进行更深入的讨论。您通常会将一个 Domino 文档映射为 RDBMS 表中的一行数据。Domino 文档中的每个字段可以映射成为该表中的一列。然而,一个表中的每一列(也就是每个字段)都只能存储一个 值。在一个 RDBMS 中,您需要单独创建一个具有两列的表。一列使用一个外键链接到表单上(表中的一行) 。另外一列链接到另外一个表上,其中列出了这个多值字段所有可能的值。