上一个 目录 索引 下一个 |
Sun Java System Application Server 企业版 7 2004Q2 入门指南

> ## 第 1 章
> Sun Java System Application Server 7 企业版简介

> 本章包括以下数节：

> - 关于 Sun Java System Application Server
> - 关于企业版功能
> - 配置和管理应用服务器的工具

> ##

> 关于 Sun Java System Application Server

> Sun Java™ System Application Server 7 企业版提供了一个高性能的 Java™ 2 Platform, Enterprise Edition (J2EE™) 平台，可广泛适用于各种应用服务和 Web 服务的部署。本产品提供了一个基于行业标准组件的全新模块式体系结构，包括经过认可的 HTTP 服务器基础架构的实现、Java 消息服务（JMS），以及对最新的 J2EE 和 Web 服务规范的严格支持，这些规范适用于 Java Web Services Developer Pack 软件中的 J2EE 1.3 版、Java 2 Platform, Standard Edition 1.4 版和用于 XML 的 Java API (JAX)。

> 此外，Sun Java System Application Server 还提供了 HTTP/S 和 RMI/IIOP 请求的负载平衡功能以及远程 EJB 引用和 HTTP 会话的高可用性。有关这些功能的完整列表，请参见 Sun Java System Application Server Product Introduction。

> 本节包括以下数个主题：

> - 关于应用服务器实例
> - 关于管理域

> ### 关于应用服务器实例

> 应用服务器实例构成了应用服务器部署的基础。每个实例都有自己的目录结构、配置和已部署的应用程序。每个服务器实例还包含了 J2EE 平台的 Web 和 EJB 容器。Sun Java System Application Server 还包含一个经过认可的高性能 HTTP 服务器。对象请求代理（ORB）模块允许使用 RMI-IIOP 进行 EJB 调用。

> 为了访问后端系统，应用程序可以利用 J2EE 连接器体系结构支持和第三方资源适配器（内置 JMS 供应程序或第三方供应程序），以及若干种常用的第三方 JDBC 驱动程序的任意组合。对后端系统的访问可以使用内置的纯 Java 语言编写的事务管理器在分布式事务范围内进行管理。

> 管理服务器是一个特殊的服务器实例，它运行着核心管理应用程序和一个 SNMP 代理。所有的远程管理活动均流经管理服务器。基于命令行和基于 Web 浏览器的管理客户机均通过 HTTP 或 HTTPS（较为安全）直接访问管理服务器。

> Web 服务器插件（例如负载平衡器插件）可使您在一个或多个 Web 服务器的后面部署应用服务器，这些 Web 服务器位于受到一层或多层防火墙保护的隔离区 (DMZ) 中。这些插件为前端 Web 服务器层提供了将接收自 Internet 的流入的 HTTP 和 HTTPS 通信定向到位于后端应用服务器层中的一个或多个应用服务器的方法。

> 有多种客户机应用程序可以访问部署到应用服务器的商业服务。Web 服务客户机和基于浏览器的客户机可以使用 HTTP 或 HTTPS 访问 Web 服务、服务器端的端点和 J2EE Web 应用程序。

> 图 1-1 详细地显示了一个应用服务器实例。应用服务器实例是群集功能、负载平衡功能和会话持久性功能中的生成块，关于企业版功能中介绍了这些功能。

> 图 1-1 Sun Java System Application Server 实例

> ### 关于管理域

> 管理域允许您定义多个完全独立的应用服务器运行时配置，这些配置重复使用相同的安装映像。每个管理域均有一个管理服务器，该管理服务器控制一个或多个应用服务器实例。图 1-1 显示了一个管理域。

> 在下面的教程中，您将使用产品安装期间配置的一个管理域和群集中的多个服务器实例。

> ##

> 关于企业版功能

> Sun Java System Application Server 企业版 7 2004Q2 提供了先进的群集和故障切换技术。这些功能可以帮助您运行可扩展的且具有高可用性的 J2EE 应用程序。

> 本指南向您展示了如何使用以下各部分中介绍的企业版功能：

> - 群集
> - 会话持久性
> - 具有高可用性的数据库

> ### 群集

> 一个群集就是一组应用服务器实例。使用时，这些实例是一个逻辑整体。群集中的每个应用服务器实例都拥有相同的配置，并被部署了相同的应用程序。有关应用服务器群集的详细介绍，请参见第 2 章 “群集方案”。

> 群集中的应用服务器实例可以存储在不同的计算机上，也可以存储在同一台计算机上。也就是说，可以将不同计算机上的应用服务器实例编组到一个逻辑群集中。在本指南中，缺省配置适用于同一台计算机上的两个实例。

> 有关群集的详细信息，请参见 Sun Java System Application Server Administration Guide。

> 在 Sun Java System Application Server 中使用群集可帮助您获得：

> - 高可用性
> - 可扩展性
> - 负载平衡

> #### 高可用性

> Sun Java System Application Server 通过为群集中的应用服务器实例提供故障切换保护来提供高可用性。一个应用服务器实例出现故障时，另一个应用服务器实例将接管已指定到该故障服务器实例的会话。

> 会话信息存储在具有高可用性的数据库（HADB）中，该数据库与 Sun Java System Application Server 企业版捆绑在一起。有关 HADB 的详细信息，请参见具有高可用性的数据库。

> Sun Java System Application Server 为以下各项提供故障切换支持：

> - HTTP/S 会话
> - HTTP 会话中的 EJB 引用
> - 通过 RMI/IIOP 进行 EJB 和 JNDI InitialContext 的远程引用
> - JMS 连接

> ##### HTTP/S 会话

> 服务于一个会话的某个应用服务器实例变得不可用时，负载平衡器插件会将 HTTP/S 连接及关联的会话信息故障转移到另一个服务器实例。启用高可用性后，会话信息存储在 HADB 中。

> 负载平衡器插件通过以下两种方法跟踪 HTTP/S 会话：

> - Cookie
> - 明确的 URL 重写

> 群集配置应创建于 loadbalancer.xml 文件中，该文件需要根据与负载平衡器插件一起安装的 loadbalancer.xml.example 文件来手动创建。默认情况下，此示例配置文件位于 Web 服务器的 config 目录中。

> 有关配置 HTTP/S 会话的高可用性的详细信息，请参见第 4 章“Cluster JSP 样例应用程序教程”。

> ##### HTTP 会话中的 EJB 引用

> 本产品支持存储在 HTTP 会话中，用于实现 java.io.Serializable 界面的 EJB 引用和 J2EE 对象的故障切换。有关详细信息，请参见 Sun Java System Application Server Administration Guide 中的 "Configuring Session Persistence"。

> ##### 通过 RMI/IIOP 进行 EJB 和 JNDI InitialContext 的远程引用

> 要启用 RMI/IIOP 应用程序的高可用性，需要用指定的 IIOP 端点配置一个 IIOP 群集。ORB 侦听程序也称作 IIOP 端点，它们将成为 IIOP 群集的一部分。IIOP 端点可以使用管理控制台或 CLI 进行配置。

> 沿 RMI/IIOP 路径接收到请求后，应用服务器将在群集中随机选取一个可用的 IIOP 端点作为主端点。然后，将群集中的其它 IIOP 端点指定为替代端点。

> 如果主端点变得不可用，与连接相关联的远程引用将被故障转移到替代端点之一。

> IIOP 群集可以使用管理控制台或 CLI 进行配置，所做更改会被记录到应用服务器配置文件 server.xml 中。有关详细介绍，请参见 RMI/IIOP 群集方案。

> 注 | IIOP 和 HTTP 群集必须由相同的应用服务器实例组成。

> ##### JMS 连接

> Sun Java System Message Queue Enterprise Edition 3.5 SP1 提供了 JMS 连接故障切换。

> #### 可扩展性

> Sun Java System Application Server 允许将应用服务器实例添加到群集，这为 J2EE 应用程序提供了较高的可扩展性，进而提高了系统的性能。将应用服务器实例添加到群集时无需中断服务。

> HTTP 和 RMI/IIOP 负载平衡系统会将请求分布到群集中正常的应用服务器实例上。

> #### 负载平衡

> 负载平衡的目的是平均分配多个 Sun Java System Application Server 实例之间的工作量。您可以为沿 HTTP/S 和 RMI/IIOP 路径的应用程序请求配置负载平衡。

> 本部分包括以下主题：

> - HTTP 负载平衡
> - RMI/IIOP 负载平衡

> ##### HTTP 负载平衡

> Sun Java System Application Server 会将传入的 HTTP 和 HTTPS 请求分布到群集中已配置的各个应用服务器实例上。负载平衡由捆绑的负载平衡器插件来完成，这些插件安装在支持的 Web 服务器上。

> 当新的 HTTP 请求发送到负载平衡器插件时，基于运用一个简单的 round robin 机制，该请求被转发到一个应用服务器实例；具有相同上下文根路径的后续请求，基于运用 cookie 或明确的 URL 重写，将被分配到服务于第一条请求的应用服务器实例。

> 要配置 HTTP 负载平衡和故障切换，需要将应用服务器群集指定到负载平衡插件。对配置的更改必须在 loadbalancer.xml 文件中进行。有关负载平衡器配置文件的详细信息，请参见创建 loadbalancer.xml 文件。

> 您可以使用随 Sun Java System Application Server 一起提供的负载平衡器插件，也可以使用各种第三方硬件和软件负载平衡器。本指南介绍了捆绑的 HTTP 负载平衡器插件。有关负载平衡的详细信息，请参见 Sun Java System Application Server Administration Guide。

> ##### RMI/IIOP 负载平衡

> Sun Java System Application Server 企业版 7 基于 JNDI InitialContext，提供了 RMI/IIOP 路径上的远程 EJB 引用的负载平衡。对于每个新初始化的 JNDI InitialContext，会从已配置的 IIOP 群集中选择一个新的目标应用服务器实例。

> 要为基于 RMI/IIOP 的请求启用负载平衡，需要在 RMI/IIOP 客户机应用程序中进行一些细微的代码更改，以启用负载平衡。捆绑的 ORB 为负载平衡提供了必要的基础架构。

> 系统支持以下两种 RMI/IIOP 客户机的负载平衡。

> - 在应用程序客户机容器（ACC）中运行，且访问部署在应用服务器实例上的 EJB 的 Java 应用程序。
> - 不在 ACC 中运行，但访问部署在应用服务器实例上的 EJB 的 Java 应用程序。

> 启用 RMI/IIOP 客户机中的负载平衡的设置根据客户机的类型有所不同。有关示例配置，请参见 RMI/IIOP 群集方案。有关设置各种 RMI/IIOP 客户机的详细信息，请参见 Sun Java System Application Server Developers Guide to Clients。

> ### 会话持久性

> Sun Java System Application Server 实例或服务器失败时，会话持久性可以确保 HTTP/S 或 EJB 会话会由另一个服务器实例接管。Sun Java System Application Server 支持以下各项的持久性：

> - HTTP 会话
> - HTTP 会话中的 EJB 引用
> - 状态会话 Bean (SFSB)

> 具有高可用性的数据库（HADB）与 Sun Java System Application Server 捆绑在一起，可用作持久性存储库。有关具有高可用性的数据库的详细信息，请参见具有高可用性的数据库。

> 本部分包括以下主题：

> - 关于会话持久性类型
> - 关于会话持久性配置
> - 关于单一登录会话信息
> - 关于 SFSB 检查点

> #### 关于会话持久性类型

> Sun Java System Application Sever 支持三种类型的持久性：ha、file 和 memory。

> - ha（高可用性）类型的持久性将会话信息存储在 HADB 中。需要故障切换功能的生产环境支持 ha 类型的持久性。

> 可以使用管理界面来选择 HADB 持久性存储库。请执行以下步骤，将 HADB 设置为持久性存储库：

> 1. 打开服务器实例下的“可用性服务”组件。
> 2. 转至“可用性服务”页面。
> 3. 选中“实例级别可用性”框。
> 4. 单击“保存”按钮。
> 5. 单击“持久性存储属性”下的“属性”。
> 6. 在“名称”字段中，键入 store-pool-jndi-name。
> 7. 在“值”字段中，键入 HADB JDBC 资源的 JNDI 名称。假定的缺省名称为 jdbc/hastore。
> 8. 单击“保存”按钮。
> 9. 转至服务器实例页面。
> 10. 应用更改并重新启动服务器。

> 配置 HADB 后，server.xml 文件中的元素分层结构如下所示：

> <server name="server1" ... >

> ...

> <availability-service availability-enabled="true">

> <persistence-store>

> <property name="store-pool-jndi-name" value="jdbc/hastore"/>

> </persistence-store>

> </availability-service>

> ...

> </server>

> 有关如何配置 HADB 持久性存储库的信息，请参见管理指南。

> - file 类型的持久性定期将会话信息存储到文件中，但如果实例变得不可用，可能会丢失数据。需要故障切换功能的生产环境不支持 file 类型的持久性，该类型仅有时用在测试应用程序的开发环境中。

> 如果将本地文件系统用于 SFSB 状态持久性，那么将由 server.xml 文件中的 session-store 属性来确定 SFSB 状态的存储位置。例如：

> <server name="server1" ... session-store="/export/sfsbstore">

> - 服务器实例正常关闭时，memory 类型的持久性会将会话信息存储到文件中。服务器实例异常关闭时，它并不存储会话信息。需要故障切换功能的生产环境不支持 memory 类型的持久性。

> 本指南的练习中仅涉及 ha 类型的会话持久性。有关配置和使用其它类型的会话持久性的详细信息，请参见 Sun Java System Application Server Administration Guide。

> #### 关于会话持久性配置

> 安装 Sun Java System Application Server 并运行 clsetup 命令后，会话持久性信息被配置为缺省值。但是，您可以更改缺省值以满足对于性能、可靠性和高可用性的特殊需要。以下两个主题中介绍了这些选项：

> - 设置持久性范围
> - 设置持久性频率

> ##### 设置持久性范围

> 如果将 HADB 用作持久性存储库，必须设置持久性范围以配置应存储的会话状态的数目。例如，每次保存数据时，要么存储整个会话，要么仅存储已修改的会话。您可以配置持久性设置，以便仅存储会话中被修改的属性。

> 有以下三个选项供您选择：

> modified-session 仅存储已修改的会话。

> session 每次将会话状态保存到 HADB 时保存整个会话。

> modified-attribute 仅保存会话中已修改的属性。

> ##### 设置持久性频率

> 如果使用 HADB 存储会话状态，可以配置将会话状态存储到 HADB 数据库中的频率。例如，可以选择在每个 Web 请求之后存储会话，以提供更新的会话状态的高可用性和可靠性；也可以选择在指定的时间间隔后存储会话，以提供更好的性能。

> 有以下两个选项供您选择：

> web-method 如果选择 web-method 持久性频率，将在每个 Web 请求结束时存储会话。

> time-based 如果选择 time-based 持久性频率，将根据在 server.xml 文件（实例级别的配置）或 sun-web.xml 文件（应用程序级别的配置）的 manager-properties 元素的 reapIntervalSeconds 特性中定义的时间间隔来存储会话状态。

> 注 | 仅可为 ha 类型的持久性选择持久性频率。

> 有关会话持久性各种配置的详细信息，请参见 Sun Java System Application Server Administration Guide 中的 "Configuring Session Persistence"。

> #### 关于单一登录会话信息

> 在单个应用服务器实例中，如果一个 Web 应用程序验证了用户，则运行在同一个实例上的其它 Web 应用程序不会对用户进行重新验证。这称为单一登录。

> 为了使会话故障转移到群集中另一个实例后，该功能仍然可用，必须将单一登录信息保留在 HADB 中。持久性在启用应用服务器实例的高可用性时被启用，同时以下特性将被添加到 server.xml 中的 virtual-server 元素：

> <property name="sso-enabled" value="true"/>

> 运行 clsetup 命令时，将自动配置高可用性。

> #### 关于 SFSB 检查点

> 在 SFSB 的生命周期中，其状态被保存到预定义点处的持久性存储库中。

> SFSB 检查点有五个不同级别可供启用：

> - 服务器实例
> - EJB 容器
> - 应用程序
> - EJB 模块
> - SFSB 自身

> 要启用给定级别的 SFSB 检查点，它必须已在所有更高级别中启用。例如，要启用应用程序级别的 SFSB 检查点，必须在服务器实例级别和 EJB 容器级别启用该 SFSB 检查点。

> 有关如何配置 SFSB 检查点的详细信息，请参见 Sun Java System Application Server 7 Developers Guide to Enterprise JavaBeans Technology。

> ### 具有高可用性的数据库

> 具有高可用性的数据库（HADB）用于存储 HTTP 和 SFSB 会话信息。高可用性是指无论由于硬件还是软件失败引起意外故障，系统都保持可用状态。HADB 是 JDBC 兼容数据库，它基于“Always-On”技术，能够提供 99.999% 以上的数据可用性，为在高负载的企业级应用服务器环境中提交各种类型的会话状态持久性提供了一个理想的平台。

> HADB 通过对数据进行分段和复制来提供数据的高可用性。将数据库中所有的表进行分区，以创建大小大致相同的子集（称之为段）。该分段过程基于散列功能，该功能在数据库节点之间对数据进行分段和平均分布。每个段存储两次，一次在数据库中，另一次在镜像节点中。这确保数据具有容错和快速恢复功能。此外，如果一个节点失败或关闭，备用的节点可以接管，直到第一个节点再次处于活动状态。

> HADB 在一个单独但紧密集成的永久性存储层中存储和检索所有状态信息。有关安装和配置 HADB 的详细信息，请参见《Sun Java System Application Server 安装指南》中的“HADB 安装的准备工作”。

> ##

> 配置和管理应用服务器的工具

> Sun Java System Application Server 提供了以下这些配置和管理 Sun Java System Application Server 的工具。您可以使用这些工具来启动和停止服务器，也可以使用这些工具来执行多种其它功能。教程中包含了使用其中一些工具执行特定配置任务的详细步骤。

> - asadmin 实用程序。asadmin 实用程序使用命令行界面，可以用来在单个应用服务器实例或管理域中执行管理任务。

> 有关 asadmin 的详细信息，请参见 Sun Java System Application Server Administration Guide 中的 "Appendix A, Using the Command Line Interface"。

> - cladmin 命令。cladmin 命令在群集中的所有应用服务器实例上同步运行一些特定的 asadmin 命令。使用 cladmin 命令可以确保对群集中的所有实例进行相同地配置，所以只要可能就应使用 cladmin 命令，而不是 asadmin 命令。cladmin 命令并不支持所有的 asadmin 命令。

> 有关 cladmin 的详细信息，请参见 Sun Java System Application Server Administration Guide 中的 "Appendix F, Using the cladmin Script for Administration"。

> - 管理界面。管理界面是一个基于 Web 的用户界面，可以用来配置管理服务器和单个的应用服务器实例，还可以用来查看单个应用服务器实例的日志文件。

> 有关管理控制台的详细信息，请参见 Sun Java System Application Server Administration Guide 中的 "Part 1, Server Basics and Administering Global Settings"。

> - clsetup 命令。clsetup 命令使您能够轻松地设置群集，包括 HADB 数据库的初始配置。有关 clsetup 命令的完整说明，请参见《Sun Java System Application Server 安装指南》。此外，您应参考随 clsetup 一起提供的手册页。

> 注 | 服务器配置的某些方面和相应的界面仍会有所变化。在以后发行的产品中，可能将不稳定的界面替换为更清晰、更稳定的界面。多数服务器配置和管理界面将保持不变，或以兼容的方式进行一些更改，但是某些方面可能会有很大的更改。以后发行的产品文档中将清楚地介绍实际进行了哪些不兼容的更改。

> 上一个 目录 索引 下一个

> 版权所有 2004 Sun Microsystems, Inc. 保留所有权利。