概念:J2EE 部署配置
该指南讨论了 J2EE 平台的各种部署配置的优点和缺点。
关系
主要描述

简介

J2EE 平台支持各个不同的标准部署配置的开发和部署。就是这样的标准部署配置使得应用程序开发免却许多推测。 在以下各部分中,将提供最常见部署配置的描述,以及每个配置的优缺点。

如果您尚不熟悉 J2EE 概念,请在继续之前参阅 Java 2 Platform Enterprise Edition(J2EE)概述中描述的那些概念。

单机部署配置

第一种部署配置在图 1 中显示。在这种配置中,既没有 Web 容器,也没有 EJB 容器 - 客户端直接访问 EIS 资源,且自己负责处理所有表示逻辑、业务逻辑和集成逻辑。

在附带文本中描述的图。

图 1:单机部署配置

粗略看去,此配置可能象是对应用程序的吸引人的提议,其中应用程序对保存在 EIS 资源中的数据提供简单操纵。 但是,此配置有很多潜在缺点。

对 EIS 资源的更改可能对应用程序的实施产生很大影响,其中的应用程序常常直接依赖于每种 EIS 资源的内部结构,例如数据库表的结构。 对应用程序本身的任何更改需要向每名用户完整展示 - 不存在部署应用程序中央服务器,可使得客户端能立刻访问最新的修订。

另外,此部署配置不鼓励对职责进行划分。 例如,常存在这样的情况,即表示逻辑和业务逻辑紧密联系,从而使得难以支持应用程序的升级和维护。

不过,此部署配置的真正问题会在您决定扩展应用程序时开始显现。 客户端工作站具有有限的性能特征,因此,理想情况是,您应将处理跨多台机器分发。不过,单机配置的设计不支持分发式处理。 另外,当您尝试支持同时访问 EIS 资源的更多客户端时,您可能会发现您的应用程序受到 EIS 资源本身的限制,例如并发数据库连接数。

EJB 中心部署配置

EJB 中心部署配置显示在图 2 中。在这种配置下,EJB 容器位于客户端容器和 EIS 资源之间 - 不存在 Web 容器。表示逻辑位于客户端内,业务逻辑驻留在 EJB 中。 与直接访问 EIS 资源不同,来自客户端的所有请求受相应的 EJB 的管理。 所以,客户端不受 EIS 资源中的更改的影响。

在附带文本中描述的图。

图 2:EJB 中心部署配置

EJB 中心部署配置的设计可以解决单机部署配置中存在的许多问题。 从可伸缩性角度,J2EE 平台实施可以将处理跨多台机器分发。 另外,EJB 容器负责确保高效地使用有限的资源,例如数据库连接。 从应用程序演进和维护的角度,此配置还鼓励分开表示逻辑和业务逻辑。

不过,EJB 中心部署配置的缺点之一是,即使只对用户界面进行少量的更改,也需要将应用程序完整展示给每名用户。 即使封装在 EJB 中的业务逻辑可以在服务器上重新部署(从而使用户能立即访问所有更改),但对于表示逻辑则非如此。 这很不幸,因为应用程序的外观可能会经受频繁的更改。

Web 中心部署配置

Web 中心部署配置显示在图 3 中。在这种配置下,Web 容器位于客户端容器和 EIS 资源之间 - 不存在 EJB 容器。表示逻辑和业务逻辑均由 Web 容器内的元素(JSP 和 servlet)处理。 在这种配置下,在客户端中使用简单标记语言(例如 HTML),尽管也可以使用 XML 或 WML。

在附带文本中描述的图。

图 3:Web 中心部署配置

通常 Web 中心部署配置会导致强调支持生成的应用程序的外观,而不太强调 支持业务逻辑。这样的配置支持对应用程序外观的频繁更改,且在如今得到广泛应用。

Web 中心部署配置提供了许多好处。首先,客户端不受对 EIS 资源的更改的影响,因为客户端不直接访问这些资源。 其次,可以重新部署整个应用程序,而无需向用户作任何展示,因为应用程序整个驻留在服务器上。

不过,尽管 EJB 的使用有时被视为对于手边的工作有“大材小用”之嫌,但省略 EJB 却会导致在单机部署配置中发生的一些问题。 尤其是,此配置不鼓励在表示逻辑和业务逻辑之间进行清晰的职责划分,这常常导致出现紧密联系的元素,这些元素阻碍应用程序演进和维护。 另外,单机部署配置中存在的所有可伸缩性问题也适用于 Web 中心体系结构。

多层部署配置

多层部署配置在图 4 中显示。此配置同时包括 Web 容器和 EJB 容器,它显示出具有针对其他部署配置讨论的所有好处,而不含任何缺点。 表示逻辑由 Web 容器内的元素处理,业务逻辑由 EJB 容器内的 EJB 处理。

在附带文本中描述的图。

图 4:多层部署配置

客户端不受对 EIS 资源的更改的影响,因为客户端不直接访问这些资源。 另外,可以重新部署整个应用程序,而无需向用户作任何展示,因为应用程序整个驻留在服务器上。

从可伸缩性角度,可分发处理以支持并发处理。 另外从可伸缩性的角度,EJB 容器负责确保高效地使用有限的资源,例如数据库连接。

从应用程序升级和维护的角度,此配置还鼓励清晰的职责划分。 表示逻辑与 EIS 资源分离,业务逻辑与外观分离。 此种清晰分离可以帮助将工作分配给技能不同的开发人员,且表示逻辑和业务逻辑可以同时开发。

多层部署配置还可以使一个客户端设备(例如 Web 浏览器)到另一个客户端设备(例如 PDA)的迁移变得容易。 不需要完全重写应用程序,因为封装在 EJB 中的业务逻辑保持不变,可以原封不动地使用。

总而言之,有多种部署配置,每种都有其自身的优点和缺点。J2EE 平台的目标之一在于具有足够的灵活性,以支持被认为是适用于组织的任何一种部署配置,同时解决企业关心的问题。