原则 - ibm.com · html...

26
35 第二部分 原则

Upload: others

Post on 26-Dec-2019

6 views

Category:

Documents


0 download

TRANSCRIPT

35

第二部分 原则

36

37

5 技术选项

本章考察在基于开放性标准和 Java编程(IBM电子商务软件战略已经概述)的Web应

用程序中您应考虑采用的技术。以平台独立性为主要焦点,相关建议都以重复利用、灵

活性和互操作性要求为指导,并且以 Java2平台企业版(J2EE)概述的开放性行业标准

为基础。随着 J2EE 规范日趋成熟,并包含更为广泛的企业体系结构视图,选择余地将

会越来越大。这些建议已根据 J2EE1.2规范得以更新。

我们将考察同时适用于应用程序客户机和服务器端的技术。有些技术(如 Java和 XML)

可适用于两者。同样,设计中使用的客户端技术选择会针对服务器端要求考虑事项,比

如是否为客户端存储或动态创建元素。另外,我们还将谈及无线领域的一些最新技术选

择。

下面几节将详细介绍在设计中您需要考虑的许多技术。我们建议采用以下技术:

HTML

Java服务件和 JavaServer Page

XML

连接器

Enterprise Beans

38

JDBC

其他企业 Java API

这些技术用于以下电子商务应用程序的逻辑模型情形。此模型与 GUI开发中的“模型-

视图-控制器”方法有相似之处,把表示逻辑描绘为由交互控制(Java服务件实施)和

页面构造(JavaServer Page实施)构成。可以使用 Beans和/或 Enterprise Beans实施商

业逻辑,具体情况取决于应用程序的事务处理特征。商业逻辑可能需要使用适当的连接

器技术访问外部资源。

图 5-1电子商务应用程序(使用推荐的核心技术)的逻辑结构

我们将讨论以下技术及其使用局限性:

DHTML

JavaScript

Java小程序

5.1 Web客户机

图 5-1显示建议Web客户机采用的技术。

39

图 5-2Web客户机技术模型

这些客户机是“瘦客户机”,具有极少或没有应用逻辑。在服务器上管理应用程序,并

下载到请求客户机。应用程序的客户机部分应采用 HTML、动态 HTML(DHTML)、

XML和 Java小程序实施。

以下几节将概述一些您应考虑的技术,但请记住,您的选择可能会受到客户或发起者政

策的制约。例如,出于安全原因,某些政府机构只允许在Web客户机使用 HTML。

5.1.1 Web浏览器

Web 浏览器是 Web 客户机的基本组件。对于基于 PC 的客户机,浏览器一般包含对

HTML、DHTML、JavaScript和 Java的支持。有些浏览器已开始增加对 XML的支持。

在用户控制下,还有多种其他技术可以配置为“插件”,例如,RealNetworks的 RealPlayer

或Macromedia Flash。

40

作为一名应用程序设计人员,您必须考虑采用的技术级别是否可在用户的浏览器中使

用,您也可以给应用程序添加逻辑,以便根据浏览器级别进行少量修改。关于插件,您

需要考虑目标用户群的哪些部分具有该能力。

需要采取交叉浏览器策略来确保进行稳定的应用程序开发。尽管其中许多技术选择已经

成熟,但各种浏览器供应商对其支持情况并不一致。开发人员必须了解应用程序采用的

所有功能的浏览器兼容性。一般情况下,开发人员需要按最低标准进行编码,它至少能

够使用编程技术区分浏览器类型。这里的关键决策是确定由老式浏览器、其它平台(如

Linux和Mac)甚至最新浏览器进行处理时的应用程序要求和行为。

在 J2EE 模型中,Web 浏览器起着客户机容器的作用。模型要求该容器提供如 Java2平

台标准版(J2SE)中定义的 Java 运行时环境。但是,对于一个将由具有不同浏览器功

能的最广大用户组访问的电子商务应用程序来说,客户机通常是用 HTML 编写的,无

需任何其他技术。但有时可以根据用户价值以及所开发项目的机构政策,考虑有限度地

使用其他技术,比如使用 JavaScript进行简单的编辑检查。

新设备的出现为设计工作带来新的考虑事项,具体是关于设备可以呈现的内容流以及浏

览器更为有限的功能。例如,WAP(无线应用协议)使设备能够呈现用WML(无线标

记语言)发送的内容。

5.1.2 HTML HTML是一种文档标记语言,支持浏览器呈现的超级链接。它包括用于简单窗体控件的

标记。许多电子商务应用程序是使用 HTML严格汇编的。其优点是,客户端Web应用

程序可以是简单的 HTML 浏览器,从而使功能不太强的客户机能够执行电子商务应用

程序。

HTML规范为具有各种字体、颜色、列表、表格、图像和窗体(文本字段、按钮、复选

标记(checkbooks)以及单选按钮)的文本定义用户界面(UI)元素。这些元素适合于

显示多数应用程序的用户界面。但缺点是它们具有一般的外观和感受,缺乏定制功能。

因此,有些电子商务应用程序开发人员用其它用户界面技术对 HTML 进行补充,以便

增强视觉体验,但需要维持目标用户群的正常访问,同时遵守公司关于 Web 客户机技

术的政策。

41

由于多数Web浏览器可显示 HTML3.2版,所以这是构建应用程序客户端的最低公共标

准。为确保兼容性,开发人员应通过验证器工具,以单位测试页面。同时可以获得免费

工具,如http://validator.w3.org/。

5.1.3 动态HTML

DHTML在设计和显示用户界面方面具有极高的灵活性。尤其是 DHTML包括级联样式

表(CSS),CSS可为显示的各个部分创建不同的字体、页边距和行间距。并可使用绝

对坐标精确定位这些元素。

DHTML的另一个优点是,通过文档对象模型和事件模型增强 HTML页的功能性级别。

文档对象使诸如 JavaScript这样的脚本语言能够控制 HTML页的各个部分。例如,可以

按照某个脚本的命令,在窗口内移动、隐藏或显示文本和图像。而且,当鼠标移动到某

个链接上时,可以使用脚本更改该链接的颜色或图像,也可以验证某个窗体的文本输入

字段,而无需将该窗体发送到服务器。

遗憾的是,使用 DHTML也有若干缺点。最大的缺点是,存在两种不同的实施(Netscape

和Microsoft),而且只能在较新的浏览器版本上找到。两者中小部分基本功能是相同的,

但在许多方面存在差异。最显著的差异是,Microsoft允许使用 JScript或 VBScript修改

HTML页的内容,而 Netscape只允许使用 JavaScript操作(移动、隐藏、显示)内容。

由于浏览器支持级别各不相同,因此必须使用交叉浏览器设计策略,以确保 DHTML元

素的表示和行为适当。一般情况下,不建议使用此技术,除非需要其功能来满足可用性

要求。

5.1.4 CSS 级联样式表使您可以定义 HTML 文档的常用外观和感受。此规范描述如何以打印和联

机模式显示Web文档。

42

CSS被定义为一组由选择器识别的规则。当客户机浏览器处理选择器时,使选择器与特

定 HTML标记相匹配,然后根据标记的属性应用选择器。这样,就可以对颜色、字体、

页边距和边框进行全局控制。此外,还有更多高级命令可用于控制像素坐标。可以对相

关样式表命令进行组合,然后将其作为单独的模板文件显示出来,以便大量网页进行引

用。

CSS被定义为级别 1和级别 2规范。级别 1规范是根据 HTML编写的,而级别 2可扩

展为可包含 XML文档的一般标记样式。使用 CSS的开发人员通过验证器工具进行单位

测试。这样的验证器工具如:http://jigsaw.w3.org/css-validator/。

由于浏览器支持级别各不相同,因此必须使用交叉浏览器设计策略,以确保 CSS元素的

表示和行为适当。一般情况下,请慎用此技术,以防破坏规范元素的支持。

5.1.5 XML(客户端)

XML 使您可以利用文档类型定义(DTD)中指定的标记,指定自己的标记语言。然后

生成使用此标记的实际内容流。可以使用 XSL(可扩展样式表语言,以 CSS 为基础)

把内容流转换为其它内容流。

对于基于 PC的浏览器,HTML无论在文档内容方面,还是在格式编排方面,都已根深

蒂固。领先的浏览器供应商大量投资基于HTML的呈现引擎,同时大量投资基于HTML、

便于 JavaScript处理的文档对象模型(DOM)。

XML看来充当了 PC浏览器环境中 HTML文档现有内容的补充角色。

对于新型设备,如支持 WAP 的电话和语音客户机,数据内容和格式是由新兴 XML 架

构(DTD)、用于WAP电话的WML以及用于语音接口的 VoiceXML定义的。

对于多数 Web 应用程序设计,您应关注在服务器端使用 XML。有关在服务器端使用

XML的其它讨论内容,请参阅第 51页,5.3.4节的“XML”。

43

5.1.6 JavaScript JavaScript是一种跨平台的、面向对象的脚本语言。由于其所支持的浏览器和文档对象,

这种语言在 Web 应用程序中非常实用。客户端 JavaScript 提供与 HTML 窗体交互的功

能。您可以使用 JavaScript 验证客户机的用户输入,并减少经过网络流向服务器的请求

数目,以帮助改进Web应用程序的性能。

ECMA,一家欧洲标准团体,发布了一种以Netscape的 JavaScript以及Microsoft的 JScript

(称为 ECMAScript)为基础的标准(ECMA-262)。ECMAScript 标准定义了一组用

Web浏览器编写脚本的核心对象。JavaScript和 JScript实施 ECMAScript的超集。

为了适应各种客户端要求,Netscape和Microsoft通过添加新的浏览器对象,在 1.2版中

扩展了对 JavaScript的实施。由于 Netscape的扩展与Microsoft的扩展互不相同,所以使

用 JavaScript1.2扩展的任何脚本都必须检测所使用的浏览器,并选择要运行的恰当语句。

一种解释为用户可以禁用客户机浏览器上的 JavaScript,但这可以被程序检测到。

只要有其它 Java技术替代选择,就不提倡在Web应用程序的服务器端上使用 JavaScript。

在您的设计中,表明使用 JavaScript价值(如简单编辑检查)的地方,请使用 JavaScript1.1,

其中包含 ECMAScript标准的核心元素。

5.1.7 Java小程序

Java 小程序具有可在 Web 浏览器中运行的用户界面(UI)技术的最大灵活性。Java 包

含一整套丰富的 UI 元素,其中包括每个 HTML UI 元素的对应元素。另外,由于 Java

是一种编程语言,因而可以创建和使用无限数量的 UI 元素。可以使用许多小配件库,

其中包含通用 UI元素,例如,表、滚动文本、电子表格、编辑器、图形、图表等。

Java小程序是采用 Java编写的程序,可从Web服务器上下载,并在Web浏览器上运行。

使用 APPLET标记在 HTML页中指定要运行的小程序: <APPLET CODEBASE="/mydir"CODE="myapplet.class"width=400 height=100>

<PARAM NAME="myParameter"VALUE="myValue">

</APPLET>

44

在此实例中,将运行名为 myapplet 的 Java 程序。把数据发送到程序的有效方法是使用

PARAM标记。该程序可以访问此参数数据,并可容易地将其用作对显示逻辑的输入。

Java还可以从Web应用程序服务器请求新的 HTML页。这就提供了与 HTML FORM提

交功能对等的功能。其优点是,小程序可以根据明显的(所点击的按钮)或唯一的(在

电子表格中编辑单元)加载新的 HTML页。

Java程序的一个特征是,它们很少只包含一个类文件。相反,大型程序可以引用数百个

类文件。逐个请求每个类文件会给服务器造成严重负担,同时也会突破网络容量极限。

但是,把所有这些类文件包装到一个文件可把请求数目从数百个减少到仅仅一个。此优

化可在许多Web浏览器中以 JAR文件或 CAB文件的形式使用。Netscape和 HotJava只

需在APPLET标记内添加一个ARCHIVE="myjarfile.jar"变量即可支持 JAR文件。Internet

Explorer 使用在 APPLET 标记内指定为小程序参数的 CAB 文件。在各种情况下,执行

JAR/CAB 文件内包含的小程序将显示比执行单个类文件更快的加载时间。尽管

Netscape和 Internet Explorer使用不同 APPLET标记来识别包装的类文件,但可以创建

一个包含两种标记的 HTML 页来支持这两种浏览器。每种浏览器只需忽略另一种浏览

器的标记。

在 UI生成中使用 Java小程序的一个缺点是,Web浏览器必须支持要求的 Java版本。因

此,使用 Java时,应用程序的 UI部分将决定哪些浏览器可用于客户端应用程序。注意:

领先的浏览器支持 Java的 JDK1.1级别的变体,而且具有不同的用于已签名小程序的安

全模型。

Java小程序的另一个缺点是,当需要那些不包含在浏览器上 Java支持组成部分的类(如

小配件和商业逻辑)时,必须从 Web 服务器将其加载。如果这些附加的类非常大,初

始化小程序可能需要从几秒钟到几分钟的时间,具体情况取决于连接因特网的速度。

由于上述缺点,在有浏览器混合级别和品牌存在的环境中不提倡使用 Java小程序。只有

在此情况下,即 HTML UI元素不足以表达客户机Web应用程序用户界面的语义,才可

以使用小程序。如果绝对需要使用小程序,必须小心地尽可能把属于核心 Java 类的 UI

元素包含在内。

45

5.2 移动客户机

移动客户机包含像移动电话、寻呼机和 PDA这样的无线设备。这些设备作为Web客户

机所带来的挑战是支持平台的计算资源非常有限。移动设备通常都非常小,因而在集成

电话、网络计算机和因特网的所有元素时,会提高硬件体系结构的限度。因此,其限制

包括:带宽窄、屏幕小、内存有限以及电能缺乏。但是,目标是要克服这些限制,通过

利用和扩展现有的Web服务器体系结构,提供从任何地方访问信息和应用程序的便利。

5.2.1 设备

移动设备包括无线台式 PC、WAP 设备、i-mode 设备、PDA 和语音电话(Phonew/

Voice)。这些设备构成一个设备齐全的远程计算环境,该环境具有采用开放性标准和

新兴技术的高效平台。这些设备通常把移动电话功能与 PDA功能结合在一起。

PDA设备无法运行台式 PC上运行的主要操作系统,因此,有各种针对移动设备的平台。

掌上设备使用 Palm-OS。WinCE/PocketPC 设备使用 Microsoft Windows 的一个称为

Windows CE的版本。

5.2.2 语音

支持语音的应用程序可实现免提的用户体验,而且不受计算机界面控件限制的妨碍。

语音技术分为两类:识别语音的技术以及生成语言的技术。计算机识别人类语言的能力

称为“自动语音识别”(ASR)。从书面文字生成语音的能力称为语音合成或文本语言

转换(TTS)。

这里只对这个领域进行了宽泛的概述。有关详细信息,请参阅《采用 WebSphere

Everyplace访问套件的移动应用:设计和开发》编号:SG24-6259。

46

5.2.3 体系结构

支持移动客户机会影响运行时拓扑,因此,必须采用系统体系结构的最佳做法来设计和

实施。有个好消息是,任意投入 Web 体系结构用于支持基于因特网应用的以往投资均

可延伸为支持移动客户机。

任何移动解决方案中,均会有一个网关。在结构上,客户机设备和 Web 服务器之间使

用无线应用协议(WAP)网关。该网关把请求从无线协议转换为 HTTP请求,相反地,

又把 HTTP请求转换为适当设备格式。

5.2.4 WAP WAP是“无线应用协议”。这是用于信息表示和交付到无线设备的标准,且不受平台、

设备和网络限制。此规范可以扩展并充分利用其它开放性标准,例如,XML、HTML、

IP和 SSL,并可在多种网络上运行。此协议的目的是通过移动电话、寻呼机和其它无线

设备提供一个用于全球性安全访问的平台。

WAP 的关键特性是因特网编程模型、WML、WMLScript 和无线电话应用(WTA)。

WAP 体系结构定义 OSI 层(如传输、安全、事务处理、会话和应用环境)的协议。它

还包括 API,如WBXML、WTA和WTAI。

5.2.5 微型浏览器

WAP 微型浏览器运行于移动客户机。它们负责显示用 WML 编写的网页,并且可执行

WMLScripts。它们与在 PC上运行的 HTML浏览器起着相同的作用。这种浏览器允许请

求WML页,并可处理网页之间的导航。尽管许多WAP设备包含微型浏览器,但多数

并不支持完整的协议栈。

5.2.6 WML 无线标记语言(WML)以 XML和 HTML 4.0为基础,专门用于小型手持设备。它是一

种基于标记的语言,处理格式化静态文本和图像,可接受数据输入以及跟踪超级链接。

47

设计模型把针对单个屏幕的一组相关标记定义为“卡片”。而把一组相关的卡片定义为

“卡片组”。当有页请求时,会把完整的卡片组下载到微型浏览器。用户在卡片之间浏

览,直到需要另一个卡片组上的某个卡片为止。

图像是以无线位图格式(WBMP)处理的。所有支持图像的WAP浏览器必须支持此格

式。

5.2.7 WMLScript 这是WML的配套语言,就像 JavaScript是 HTML的配套语言一样。这种语言可进行过

程编程,如循环、条件句和事件处理。已经为小内存空间和小型设备对信息技术进行了

优化。这种语言源于 JavaScript。

WMLScript包含一个标准功能库,这些功能包括数学、浏览器访问、核心语言功能。

WML页不包含WMLScripts,而是对脚本 URL的引用。把WMLScript文件发送到WAP

浏览器之前,先将其编译成字节代码。

5.2.8 蓝牙技术

这是一套用于低量程(最多 30 英尺)无线设备的技术规范,定义诸如电能使用和射频

这样的标准。此技术的目标是以一种对等方式,容易而简单地连接大量的计算和电信设

备,旨在作为移动 PC、移动电话和其它便携式设备之间的小规模、低成本和短程无线

电链路的标准。该标准是一个称为 Bluetooth SIG的公司社团设计的,而 IBM就是其中

一个创始成员。它之所以能够成为一种通用标准,是因为受欧洲移动电话标准(GSM)

成功的影响,即 GSM使电话用户可以跨越国界。

该规范分为两部分:核心规范和概要规范。核心规范处理普遍性主题,如无线电、基带、

链路管理器、服务发现协议、传输层和互操作性。概要部分指定不同类型的蓝牙应用所

需的协议和过程。该技术通过与内置加密和验证进行一对一连接,实施三个语音和数据

通道。

48

诸如家庭联网、汽车联网以及移动电子商务这样的应用领域可极大地受益于该项技术。

有关详细信息,请参阅位于以下地址的“普遍计算中的蓝牙应用”白皮书:http://

www-3.ibm.com/pvc/tech/bluetoothpvc.shtml,以及位于以下地址的蓝牙网站:http:

//www.bluetooth.com。

5.3 Web应用程序服务器

图 5-3显示推荐的Web应用程序服务器技术模型。

图 5-3Web应用程序服务器技术模型

本节中,我们假定您将使用 Web 应用程序服务器和服务器端 Java。尽管还有许多其他

类型的Web应用程序服务器模型,但该模型是业内广泛采用的。

49

考察 Web 应用编程环境中可用技术和 API 之前,首先谈谈此节点上的两个基本操作组

件:HTTP服务器和 Java虚拟机(JVM)。对于生产性应用程序来说,应针对领域中诸

如稳定性、性能和可用性这样的操作特征来选择这些基本组件。

然后,我们将讨论经常在用户界面中使用的“模型-视图-控制器”设计结构。对于

Web应用程序编程模型:

最好使用 JavaServer Page实施“视图”。

交互控制器主要与处理 HTTP请求以及调用正确商业或 UI逻辑相关,它通常适用

于作为服务件来实施。

“模型”通过一套 JavaBeans组件表示到“视图”和“交互控制器”。

5.3.1 Java服务件

服务件是基于 Java的软件组件,它们可以通过动态生成的 HTML响应 HTTP请求。在

Web 请求处理方面,服务件比 CGI 更有效率,因为服务件不会为每个请求创建新的过

程。

服务件在 J2EE 模型定义的 Web容器内运行,因此可以访问多种基于 Java 的 API 和服

务。在此模型中,HTTP请求是由像Web浏览器这样的客户机使用服务件 URL调用的。

与该请求关联的参数通过 HttpServletRequest 传递到服务件,HttpServletRequest 以名字

/值对的形式保存数据。服务件通过访问当前 HttpSession 对象维持多个请求之间的状

态,而当前 HttpSession 对象对于每个客户机都是唯一的,并且在客户机会话的整个生

命周期中保持可用。

作为 MVC 控制器组件,服务件把请求任务委托给协调商业逻辑执行的 Beans。然后把

任务的结果转发到“视图”组件,如产生格式化输出的 JSP。

使用服务件的优点之一是,Java程序员非常容易掌握 API。J2EE1.2平台规范需要 Servlet

API2.2,以便支持 Web 应用程序的包装和安装。该 API 在摒弃一些方法的同时,增加

了新的方法和常数。

50

IBM WebSphere Application Server 4.0的关键变化是,现在HTTP的会话范围限定在Web

应用程序上。以前,会话对象的范围覆盖整个 JVM。

服务件是Web应用程序编程模型中的一项核心技术。在实施处理从Web客户机接收的

HTTP请求的交互控制器类(Interaction Controller classes)时,建议选择服务件。

5.3.2 JavaServer Page(JSP)

通过把Web表示与Web内容分离开来,JSP可以简化创建网页的过程。在Web应用程

序的页面构造逻辑中,发送到客户机的响应通常是模板数据和动态生成数据的组合。在

此情形下,与利用服务件相比,使用 JSP 更加容易。因此,JSP代表着 MVC 模型中的

“视图”组件。

与标准的 Java服务件相比,JSP的主要优势是更加接近于表示介质。JavaServerPage是

作为 HTML 页进行开发的。一旦编译,就作为服务件运行。JSP 可包含 Web 作者熟悉

的所有 HTML标记。JSP可能包含 Java代码段,这些代码段又包含为 HTML页生成内

容的逻辑。这些代码段可以调出 Beans访问可重复利用的组件和后端数据。

JSP技术使用类似于 XML的标记以及用 Java编程语言编写的小脚本,为 HTML页概括

生成动态内容的条件逻辑。通常,首先开发最终 HTML输出,然后用 JavaScript逻辑替

换动态部分。在运行时环境中,在 Web 应用程序上执行 JSP 之前,会把其编译成服务

件。输出不仅限于 HTML,而且还包含WML、XML、cHTML、DHTML和 VoiceXML。

用于 J2EE 1.2的 JSP API为 JSP 1.1。

实施返回Web客户机的“视图”时,建议选择 JSP。如果网页所需代码占页面很大的百

分比,并且 HTML极小,那么,编写一个 Java服务件将会使 Java代码阅读和维护起来

更为容易。

5.3.3 JavaBeans JavaBeans是 Sun Microsystems公司开发的一种体系结构,描述 API以及一组基于 Java

的可复用组件的约定。写到 Sun的 JavaBeans体系结构的代码称为 Java Beans或 Beans。

JavaBeans API的设计标准之一是支持生成器工具,这些工具用于生成包含 Beans的解决

方案。Beans可以是可视的,也可以是非可视的。

51

建议通过以下几种方式将 Beans与服务件和 JSP一起使用:

作为模型层的客户机接口。交互控制器服务件将使用此 Bean接口。

作为其他资源的客户机接口。在某些情况下,可以用某种工具来生成此接口。

作为包含许多属性值对的组件,这些属性值对用于其它组件或类。例如,JavaServer

Page规范包括一组用于访问 JavaBeans属性的标记。

5.3.4 XML 可在服务器端使用 XML和 XSL样式表对内容流进行编码,并针对不同客户机分析内容

流,这样您就可以针对一系列 PC浏览器以及新兴普遍设备开发应用程序。内容为 XML

格式,并使用一种 XML剖析器将内容转换为输出流,而这些输出流以使用 CSS的 XSL

样式表为基础。

这一通用功能称为“代码转换”,并且不局限于基于 XML的技术。这里要做出的适当

决策是,在应用程序中您需要对内容转换控制到何种程度。您需要考虑何时适合使用此

动态内容生成,并考虑何时拥有某些设备类型特有的服务件或 JSP具有优势。

XML 还用作一种指定服务器之间消息内容的手段,无论两个服务器在同一企业内,还

是代表一种企业到企业的连接。这里的关键因素是当事各方在消息模型方面的协议,而

消息模型指定为 XML DTD。XML剖析器用来从消息流提取特定内容。您的设计需要考

虑是使用基于事件的方法(SAX API适用),还是使用 DOM API浏览文档的树状结构。

IBM 向 Apache 开放源码机构捐赠了其 XML4J XML Parser,该机构又把它重命名为

Xerces-java。IBM 还捐赠了其 LotusXSL 处理器,该机构把它重命名为 Xalan-java。

有关开放源 XML框架的信息,请访问:http://xml.apache.org/。

52

5.3.5 JDBC 在以数据库为中心的情况下,Web应用程序中的商业逻辑将访问数据库中的信息。JDBC

是一种 Java API,用于独立于数据库的连接。它提供了将 SQL类型映射到 Java类型的

简单方法。利用 JDBC,您可以连接到您的关系数据库,并创建和执行用 Java编写的动

态 SQL语句。

JDBC驱动程序是针对 RDBMS的,由 DBMS供应商提供,但实施的却是 JDBC API中

定义的一组标准接口。如果两个数据库之间的模型通用,即可通过更改 JDBC驱动程序

名称和 URL,在两个数据库之间切换一个应用程序。通常的做法是把 JDBC驱动程序名

称和 URL信息保存在属性或配置文件中。

您可以根据应用程序的特征,在四种 JDBC驱动程序类型中进行选择:

类型 1:JDBC-ODBC桥式驱动程序(bridge drivers)。这种类型的驱动程序(用

JDK封装)需要 ODBC驱动程序,当初推出其的目的是,在无法使用任何其他类

型驱动程序的情况下,使 Java开发人员能够访问数据库。

类型 2:本机 API部分 Java驱动程序。这种类型的驱动程序使用 DBMS的客户机

API,并且需要用于数据库客户机软件的二进制。这种类型的驱动程序具有性能优

势,但从 JVM引入本机调用。

类型 3:网络协议全 Java 驱动程序。普通网络协议与此类型驱动程序配套使用。

便携性是该种类型驱动程序的一个主要优势,但也有其局限性,因为它需要中间

件把网络协议转换为 DBMS协议。

类型 4:本机协议全 Java驱动程序。这种类型的驱动程序可以移植,并且使用DBMS

协议。类型 3 和类型 4 的驱动程序非常适用于小程序(小程序访问企业内部互联

网上的数据库服务器),因为小程序只需下载 Java代码。

增强 Web 应用程序可扩展性的一项重要技术是连接池,该技术可由应用程序服务器提

供。当用户会话中的应用逻辑需要访问某项数据库资源时,代码不是建立新数据库连接

并随后丢弃该连接,而是从已建立的池中请求一个连接,然后在不需要时将其返回到池。

53

如果是根据应用程序拓扑 1实施解决方案,那么 JDBC对于您的设计非常重要。与 JDBC

2.0关联的一项关键技术是 JNDI API。J2EE要求可以通过 JNDI命名服务把数据库用作

数据源,而 JNDI 命名服务使代码更加便于移植,更加容易维护。数据源对象提供一个

用于连接池和分布式事务处理的框架,而连接池和分布式事务处理对于企业应用程序极

为重要。程序员可以透明地使用所有这些功能。

JDBC规范的最新版本为 2.0,但您所使用的许多 JDBC驱动程序仍然实施 1.0版。

5.3.6 Enterprise JavaBeans Enterprise JavaBeans 是 Sun 的 EJB 体系结构(或“组件模型”)的商标术语。当您按

EJB规范编写代码时,就是在开发“Enterprise Beans”(也可以称为“EJB Beans”)。

Enterprise Beans与 Java Beans的不同之处在于,Enterprise Beans可安装在服务器上,并

可由客户机远程访问。EJB框架为具有事务处理特征的服务器端组件提供一种标准。

EJB 框架明确规定了 EJB 开发者和 EJB 容器提供者的责任。其意图是使 EJB 容器可以

实施“波导设备”,因为“波导设备”是进行事务处理或数据库访问所必需的。EJB开

发者指定应用描述符(有时称为“说明性编程”)中 EJB所必需的事务处理和安全特征。

然后在单独的步骤中,将 EJB 应用到您所选择的应用程序服务器供应商提供的 EJB 容

器。

Enterprise JavaBeans的类型有两种:

会话

实体

典型的会话 Bean具有以下特征:

代表单个客户机执行。

可以是事务处理性的。

可以更新基本数据库中的数据。

生命周期相当短暂。

当关闭 EJB服务器时,会话 Bean会被毁坏。客户机要继续进行计算,则必须建立

新的会话 Bean。

不代表应存储在数据库中的持久数据。

提供同时执行许多会话 Bean的可扩展运行时环境。

54

典型的实体 Bean具有以下特征:

代表数据库中的数据。

可以是事务处理性的。

多个用户可以共享访问。

可以长期存在(与数据库中数据生命一样长)。

即使重新启动 EJB服务器,也不会丢失实体 Bean。重新启动对客户机是透明的。

为许多同时活动的实体对象提供可扩展的运行时环境。

实体 Bean一般用于系统重启后仍然存在的信息。而在会话 Bean中,数据是暂时的,并

且在关闭客户机的浏览器后就不存在了。例如,包含可丢弃信息的购物车使用会话 Bean,

而购物后开的发票则是实体 Bean。

实施实体 Bean时的重要设计选择是,使用 Bean管理持久性(BMP)——在这种情况下,

必须对 JDBC逻辑进行编码;还是使用容器管理持久性(CMP)——在这种情况下,EJB

容器处理数据库访问逻辑。

Web应用程序的商业逻辑经常访问数据库中的数据。EJB实体 Bean就是一种把关系数

据库层包含在对象层的便捷方式,从而隐藏了数据库访问的复杂性。由于单个商业任务

可能需要访问数据库中的多个表,则利用实体 Bean 建立那些表中行的模型,可使应用

程序逻辑操作数据更加容易。

最新的 EJB 规范为 1.1。与 EJB1.0 最大的不同之处在于,1.1 使用了基于 XML 的应用

描述符,并需要供应商实施实体 Bean支持,从而符合 EJB。

J2EE1.2平台要求支持 EJB1.1。作为一个工具提供者,IBMWebSphere Application Server

4.0支持 J2EE,因而也支持 EJB 1.1。EJB被封装成 EJB模块(JAR文件),然后与Web

模块(WAR文件)组合在一起,形成Web应用程序(EAR文件)。EJB应用要求生成

目标应用程序服务器所特有的 EJB应用代码。

5.3.7 连接器

电子商务连接器是网关产品,它使您能够访问企业、历史应用程序,以及 Web 应用程

序的数据。连接器产品提供用于访问数据库、数据通信、消息发送和分布式文件系统服

务的 Java接口。

55

IBM提供一套重要的电子商务连接器,其包含对 CICS、Encina、IMS、MQSeries、DB2、

SAP和 Domino的工具支持。IBM的工具支持以通用连接器框架(CCF)为基础。对于

System 390上的资源,IBM目前提供基于 CCF的本机连接器。

IBM CCF用作 J2EE连接器体系结构 (J2C)的基础。J2C目前是 J2EE 1.3最终草案的

组成部分。与 CCF相同,J2C允许通过通用客户机接口 API(CCI)访问一系列系统。

应用程序设计人员针对单个 API进行编码,而不是为每个私有系统提供唯一接口。API

与后端系统之间的链接称为资源适配器,并由第三方供应商提供。资源适配器封装为

RAR文件。这有点像 JDBC驱动程序的模型。

IBM WebSphere Application Server 4.0高级版提供一种可安装的运行时支持,该支持以

作为技术预览的 J2C规范的提议最终草案为基础。高级版中的管理控制台支持“资源适

配器”配置。对 CICS 和 IMS 的支持是随用于 SAP、PeopleSoft 和 J.D.Edwards 的第三

方工具一起提供的。目前,仅支持单阶段确认(single-phase commit)。管理控制台可

以联合用于资源适配器的连接库,这些连接库封装复合属性。组件提供者通过 JNDI 查

找机制,从连接库为 EIS系统请求连接。

命令 Bean模型使您可以把代码编写到所选择的特定连接器接口上,同时设法不让 Web

应用程序的其余部分看到连接器逻辑。

如果正在解决方案中实施“直接集成单通道”应用模式,则连接器尤其重要。

5.3.8 Java消息服务(JMS)

JMS API使 Java程序员能够访问面向消息的中间件,例如,Java编程模型中的MQSeries。

这种消息中间件是访问现有企业系统的流行选择,而且是根据应用程序拓扑 2实施解决

方案的选项之一。JMS提供一种可靠、对等、松散耦合的异步通信。消息模型允许进行

点到点通信或发布/订阅。将来的 J2EE 1.3规范需要 JMS分布式事务处理(JMS/XA),

以获得两段式确认(two-phase commit)。WebSphere Application Server V4.0高级版提

供 JMS/XA与MQSeries进行集成。

56

5.3.9 附加的企业Java API

J2EE 1.2规范定义一组相互配合的相关 API。下面是迄今为止尚未讨论过的 API:

JNDI 1.2:Java命名和目录接口(JNDI)。此程序包提供一个连接目录服务的通用

API,而且其不受任何目录访问协议的限制。这样就可以容易地迁移到新的目录服

务。通过此接口,组件提供者可以按名称存储和检索 Java 对象实例。服务提供者

工具包括用于 JDBC数据源、LDAP目录、RMI和 CORBA对象注册的工具。JNDI

的实例应用包括:

- 从 LDAP目录访问用户配置文件

- 查找和访问 EJB主页

- 查找驱动程序特定的数据源

RMI-IIOP1.0:远程方法调用(RMI)。RMI 和 RMI over IIOP 作为客户机访问

EJB 服务的访问方法,是 EJB 规范的组成部分。从组件提供者的观点看,这些调

用是本地的。基础结构负责调用远程方法和接收响应。为使用此 API,组件提供者

创建了 EJB接口的 IDL描述,然后对其进行编译,以生成客户端和服务器端存根。

存根把对象工具与对象请求代理(ORB)连接起来。ORB通过因特网 ORB间协议

(IIOP)彼此通信。RMI还可用于实施有限功能的 Java服务器。

JTA 1.0:Java 事务处理 API(JTA)。这一与事务处理服务配套使用的 Java API

以 XA标准为基础。有了 EJB服务器,您就不太可能直接使用此 API。

JAF 1.0:Java Beans激活框架。此 API不是供一般应用程序使用,但可能是高级

电子邮件交互所必需的。

JavaMail 1.1:这是一组用于支持电子邮件的类。从功能上说,它提供用于读取、

发送和撰写因特网邮件的 API。此 API 模仿邮件发送系统,并需要用于发送邮件

的SMTP以及用于接收邮件的POP3或 IMAP。提供特殊的数据包装类(data wrapper

classes),用于查看和编辑邮件内容中的数据。对 MIME 数据的支持委托给识别

JAF的 Bean。

57

5.4 集成服务器

应用程序框架将应用程序集成组件定义为允许不同应用程序之间彼此通信的组件。在此

案例中,我们将把 IBM MQSeries和 MQSeries Integrator用作集成服务器,并以这些产

品为基础进行探讨。

5.4.1 面向消息的中间件

在本红皮书中,我们将研究面向消息的中间件(MOM)的角色和用途,这里的 MOM

作为拓扑结构的集成组件。首先,我们将了解MOM的原理,然后,使用这些产品说明

MOM在电子商务模式中的作用,从而考察该产品。

技术原理

要了解MOM的作用及其组件技术,我们必须考察MOM所回答的问题。

典型后台办公分布式系统环境中对于企业应用程序集成(EAI)的需要提出一个问题,

该问题可分为几个不同的部分:

如何在系统之间传输信息

如何转换信息,以便于一个系统的输出为另一个系统所接受和理解

需要搞清楚的是,这些问题彼此之间有何区别。

很明显,前者要求把网络基础结构应用到位,以便支持传输。另外,在没有MOM解决

方案的情况下,应用程序必须包含特定代码,此代码可在网络之间开始恰当连接,并能

通过这些连接收发信息。在典型的MOM解决方案中,传输层代表应用程序处理此功能。

如果必须更改某个应用程序的信息输出才能用于接收应用程序,就会使用转换和路由应

用程序。

传输层

为使用MOM传输层,发送应用程序以“消息”的形式对其信息进行封装,标注收件人

地址,并把它转交传输层,以便传递到目标收件人。接收应用程序只需连接到传输层并

请求消息,就可以获得消息。使用传输层可以使(但并不要求)接口(消息发送)成为

应用程序之间的异步操作。

58

构成传输层组成部分的每个节点都配置必需的网络连接和其它定义,这使其能够存储消

息,或在可能情况下转发消息。就此而论,我们使用“节点”一词来描述传输层的功能

控制点。

在分布式网络的主机之间传输消息时,传输层封装网络协议和字符编码标准之间的消息

传输事务和可能的转换事务。

传输层还有一个应用程序编程接口(API),它使应用程序只通过与传输层进行会话就

能够发送和接收消息。

传输层不处理任何消息转换。然而,在使一个系统的输出为另一个系统所接受时,可能

会需要进行消息转换。

转换和路由

当一个系统需要另一个系统的输出以不同形式出现时,就需要进行消息转换。转换是由

专用应用程序处理的,该应用程序从传输层获取消息,应用必需的转换,然后把转换过

的消息传回传输层,并发送给最终收件人。

如果需要转换,发送应用程序就将其消息发送到转换应用程序,而转换应用程序根据需

要调整消息,并把其重新路由到目标地址。可以有选择地提取一条传入消息的内容,并

以不同形式路由到许多目标地址。

从该基本概念起,此类最新的专用应用程序把消息范式扩展为提供丰富的功能,而不仅

仅是简单的消息转换和路由。不仅可以像前面方案中描述的那样,以点到点的方式分发

消息,而且可以通过某种代理服务,按“发布和订阅”样式进行分发。

消息代理服务

消息代理,顾名思义,是一种服务。这种服务保存按规定主题发布的消息,从而使客户

机应用程序获取已订阅的消息。这种消息分发方法进一步减轻应用程序的责任,而这些

责任与该应用程序和其它应用程序之间的数据交换相关联。

消息增强和事务处理协调

许多现代转换应用程序都增加了一个功能,即执行数据库操作,作为消息转换和路由过

程的组成部分。

59

在向前发送消息之前,该数据库操作可用于查找以及将更多数据添加到该消息。

更为重要的是,消息中的数据可用于更新数据库内容,作为消息转换和路由过程的组成

部分。这样就不可避免地需要事务处理功能,通过此功能,可以把所有相关转换、路由

和数据库操作(统称为“消息流”)作为一个工作单位进行协调。如果协调成功,就接

受该工作单位;如果任一部分发生故障,就重新运行该工作单位。

5.5 更多信息

有关本章所述主题的更多信息,请参阅:

《使用WebSphere Application Server版本 4.0的自助服务模式》,编号:SG24-

6175

《使用WebSphere高级版的 CCF连接器和数据库连接》,编号:SG24-5514

《WebSphere版本 4应用程序开发手册》,编号:SG24-6134

《具有WebSphere Everyplace Access Suite的移动应用程序:设计和开发》编号:

SG24-6259

Flanagan、David和 JavaScript:《权威指南》第三版,O'Reilly和 Associates公司,

1998年

Maruyama、Hiroshi、Kent Tamura和 Naohiko Uramoto:《XML和 Java:开发Web

应用程序》Addison-Wesley,1999年

Flanagan、David、Jim Farley、William Crawford和 KrisMagnusson:《Nutshell中

的 Java Enterprise》O’Reilly和 Associates公司,1999年

http://www.ecma.ch/stand/ECMA-262.htm ECMAScript语言规范

http://java.sun.com/products Java APIs和技术

http://www.ibm.com/software/ebusiness/docs/index.html

IBM电子商务策略论文软件包括:

- 《电子商务 IBM应用程序框架:精明技术选择》

- 《电子商务 IBM应用程序框架:结构概览》

http://validator.w3.org/Validator工具

http://jigsaw.w3.org/css-validator/Validator工具

http://www.bluetooth.com Bluetooth网站

60

泛计算中的 Bluetooth 应用程序白皮书http://www.ibm.com/pvc/ tech/

bluetoothpvc.shtml

http://xml.apache.org/开放源 XML框架