Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Update 2 发行说明

- Previous: 第 1 章 概述
- Next: 第 3 章 已知问题和限制

# 第 2 章 关于 Application Server 8.1 Update 2 2005Q2

Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Update 2 是与 J2EE 1.4 平台兼容的服务器，它用于在大规模生产环境中开发和部署 J2EE 应用程序和基于 Java 技术的 Web 服务。

本节包括：

- 8.1 2005Q2 Update 2 发行版的新增功能

- 硬件和软件要求

- Enterprise Edition 8.1 发行版中修复的错误

- Enterprise Edition 8.1 Update 2 发行版中修复的错误

- 其他 HADB 信息

- Application Server 产品发行版

- 兼容性问题

- J2EE 支持

- 高性能

- 可伸缩性

- JavaServer Faces 1.1 支持

# 8.1 2005Q2 Update 2 发行版的新增功能

Application Server Enterprise Edition 8.1 2005Q2 Update 2 包括以下增强功能：

- 改进的管理—Application Server 通过使用基于浏览器的控制台或者可执行脚本的命令行界面，来支持复杂多机企业部署的远程安全管理。它还提供了基于 JMX 的丰富 API，从而允许对管理和监视功能进行远程、安全和可编程化的访问。

- 消息代理—Application Server 捆绑有集成的企业级消息代理，该代理可以提供可用性、可靠性和性能较高的可伸缩消息传送。

- 扩展的平台支持—支持更多操作系统、数据库、语言环境和硬件。

- Sun Java Enterprise System—作为 Sun Java Enterprise System 的主要组件，Application Server 与门户和网络身份服务紧密集成。

- 迁移和升级工具—这些工具使您可以检验 J2EE 应用程序是否符合标准以及是否具有可移植性，有助于从其他 J2EE Application Server (JBoss, WebLogic, WebSphere) 进行迁移，并且便于从 Sun ONE Application Server/iPlanet Application Server 的早期版本进行升级。

- Java 2 Standard Edition 5.0 支持—Application Server 支持 Java 2 Standard Edition 5.0，此版本具有增强的管理和监视功能，并改进了许多性能和可伸缩性。

- Java Web Services Developer Pack 1.6 (JWDSP) 插件支持—现在支持所有 JWSDP 插件。可以从 `http://java.sun.com/webservices/downloads/1.6/index.html` 免费下载 JWSDP 1.6。

- JDBC 驱动程序—Application Server 捆绑有 Sun JDBC 驱动程序。

- Web 服务安全性—这些容器消息安全机制通过使用 OASIS WS-Security 标准的 X509 和用户名/密码配置文件，实现 SOAP Web 服务调用的消息级验证（例如，XML 数字签名和加密）。

- WS-I 基本配置文件 1.1—此发行版符合 J2EE 1.4 规范，它实现了 Web 服务互操作性 (WS-I) 基本配置文件 1.1，从而使 Web 服务应用程序具有互操作性。

- 与 iWay 适配器的后端连接—Sun Microsystems 现在转售和支持针对主要后端系统（SAP、Siebel、Oracle、CICS 和 IBM MQ 系列）的二十二种 iWay 适配器，有助于您在 Application Server 环境中充分利用现有的 IT 应用程序。这些适配器支持 J2EE 连接器体系结构 1.5 规范和 Web 服务 (SOAP) 标准，并且包括开发者工具以缩短连接至后端应用程序的时间。

- 最新的 HADB 管理系统—UNIXTM 平台包含新的高可用性数据库 (HADB) 管理系统（HADB 4.4.2-7 版），其中包括数据库服务器、ODBC 2.5 驱动程序、JDBC 3.0 类型 4 驱动程序、`clusql`（用于输入和执行 SQL 语句的交互式程序）和管理系统。此版本消除了对 SSH/RSH 的依赖性，但要求将网络配置为可以进行 UDP 多址广播。有关 HADB 要求和限制的详细信息，请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 高可用性管理指南》。

- Solaris 10 区域支持—Application Server 可以安装到 Solaris 10 系统上的全局区域或非全局区域中。请注意，即使已在全局区域中安装了其他 Application Server，也可以在“全根”非全局区域中安装 Application Server Enterprise Edition 8.1。有关 Solaris 区域的更多信息，请参见 Solaris 区域页。

# 硬件和软件要求

本节列出了安装 Sun Java System Application Server Enterprise Edition 8.1 产品之前必须满足的要求。

- 平台要求

- 系统虚拟化支持

- 重要修补程序信息

- JDBC 驱动程序和数据库

- 配置 Oracle

- 配置 PointBase

- Web 服务器

- 浏览器

- HADB 要求和支持的平台

- 升级 Sun Java System Application Server

- 切换到支持的 J2SE 版本

- 其他要求

## 平台要求

下表列出了 Sun Java System Application Server Enterprise Edition 8.1 2005Q2 产品所支持的操作系统。此外，还标识了安装和运行 Application Server 所需的最小内存和建议的内存。

表 2–1 Sun Java System Application Server 8.1 2005Q2 平台要求

操作系统 | 最小内存 | 建议的内存 | 最小磁盘空间 | 建议的磁盘空间 | JVM
--- | --- | --- | --- | --- | ---
Sun Solaris 8, 9, 10 (SPARC) Solaris 9, 10 (x86) | 512 MB | 1 GB | 250 MB 可用空间 | 500 MB 可用空间 | J2SE 1.4.2_06, J2SE 5.0
Red Hat Enterprise Linux 2.1 Update 2, 3.0 Update 1 | 512 MB | 1 GB | 220 MB 可用空间 | 300 MB 可用空间 | J2SE 1.4.2_06, J2SE 5.0
Windows Server 2000 SP4+ Windows 2000 Advanced Server SP4+ Windows Server 2003 Windows XP Pro SP1+ | 1 GB | 2 GB | 500 MB 可用空间 | 1 GB 可用空间 | J2SE 1.4.2_06, J2SE 5.0

在 UNIX 上，可以使用 `uname` 命令查看操作系统的版本。可以使用 `df` 命令查看磁盘空间。

## 系统虚拟化支持

系统虚拟化是一项允许多个操作系统 (Operating System, OS) 实例在共享硬件上独立执行的技术。在功能方面，部署到在虚拟化环境中托管的 OS 的软件通常不知道基础平台已被虚拟化。Sun 在所选择的系统虚拟化和 OS 组合上执行其 Sun Java System 产品的测试，以帮助验证 Sun Java System 产品是否能够继续在正确调整大小及配置的虚拟化环境中如在非虚拟化环境中一样运行。有关 Sun 对虚拟化环境中 Sun Java System 产品的支持，请参见System Virtualization Support in Sun Java System Products。

## 重要修补程序信息

有关 Sun Java System Application Server Enterprise Edition 8.1 所需修补程序的当前列表，请访问 `http://sunsolve.sun.com` 并搜索 "`app server 8.1 patch`"。然后，查看与 Sun Java System Application Server Enterprise Edition 8.1 相关的链接。操作系统修补程序的要求更改并且 Java Enterprise System 组件的修补程序变得可用后，这些更新可在 SunSolve 上获得，最初的形式为建议的修补程序群集。

### Solaris 修补程序要求

建议 Solaris 9、10（x86、SPARC）用户安装“Sun 推荐的修补程序簇”。此修补程序群集可以在 SunSolve 上的 Recommended and Security Patches 下找到。

### RedHat Enterprise Linux 3.0 的附加软件包要求

要运行此产品的本机组件（包括安装程序），应安装以下软件包，该软件包不是标准 RedHat Enterprise Linux 3.0 分发的一部分：`compat-libstdc++-7.3-2.96.118.i386.rpm`

可以从 `http://rpm.pbone.net/index.php3/stat/4/idpl/843376/com/compat-libstdc++-7.3-2.96.118.i386.rpm.html` 下载该软件包

## JDBC 驱动程序和数据库

Sun Java System Application Server 支持使用相应的 JDBC 驱动程序连接任何 DBMS。有关经 Sun 测试发现适合构建符合 J2EE 规范的数据库配置的组件列表，请参阅下表。

表 2–2 符合 J2EE 规范的 JDBC 驱动程序

JDBC 供应商 | JDBC 驱动程序类型 | 支持的数据库服务器
--- | --- | ---
i-net Software | 类型 4 | Oracle (R) 8.1.7, 9i, 9.2.0.3 Sybase ASE 12.5.2 Microsoft SQL Server 2000 4.0 Service Pack 1
IBM | 类型 2 | IBM DB2 8.1 Service Pack 3+
PointBase | 类型 4 | PointBase Network Server 4.8
DataDirect | 类型 4 | Oracle (R) 8.1.7, 9i, 9.2.0.3 Sybase ASE 12.5.2 Microsoft SQL Server IBM DB2 8.1 Service Pack 3+
用于 Oracle 的 Sun Java System JDBC 驱动程序 | 类型 4 | Oracle (R) 9.2.0.3, 10G
用于 DB2 的 Sun Java System JDBC 驱动程序 | 类型 4 | IBM DB2 8.1 Service Pack 3+
用于 Sybase 的 Sun Java System JDBC 驱动程序 | 类型 4 | Sybase ASE 12.5.2
用于 Microsoft SQL Server 的 Sun Java System JDBC 驱动程序 | 类型 4 | Microsoft SQL Server 2000 4.0 Service Pack 1
Oracle | 类型 4、类型 2 | Oracle (R) 9.2.0.3, 10G

有关 i-net Software 的更多信息，请参见 `http://www.inetsoftware.de/`。

有关 DataDirect Technologies 的更多信息，请参见 `http://www.datadirect.com/`。

## 配置 Oracle

必须正确配置 Oracle JDBC 驱动程序才能与 J2EE 1.4 兼容。对类型 2 和类型 4 驱动程序应用以下配置：

### 配置 Oracle

1. 使用 9.2.0.3 或更高版本的 JDBC 驱动程序。

2. Oracle 数据库的参数 (`init.ora`) 文件中应具有 `compatible=9.0.0.0.0` 或更高版本。

3. 使用 `ojdbc14.jar` 文件。

4. 配置 Application Server 以定义以下 JVM 属性：

       -Doracle.jdbc.J2EE13Compliant=true

   此外，对于`类型 2` 驱动程序，必须在已启动 Application Server 的环境中定义 `ORACLE_HOME` 和 `LD_LIBRARY_PATH` 变量（必须包含 `$ORACLE_HOME/lib`）。例如，将它们添加到 `asenv.conf` 文件中并确保将其导出。

## 配置 PointBase

许多样例应用程序使用 Application Server 附带的 PointBase 数据库服务器。使用 Application Server Enterprise Edition 时，必须先配置 PointBase 数据库服务器，然后才能使用该服务器。

配置 PointBase 的方法有两种：

1. 使用适于您的操作系统和 shell 的命令，将 `JAVA_HOME` 环境变量设置为 J2SE 的安装目录。例如：`% setenv JAVA_HOME "/opt/SUNWappserver/jdk"`

2. 编辑 Application Server 的 PointBase 配置文件，如下所示：

   1. 在 Solaris 和 Linux 系统上，编辑 `install_dir/pointbase/tools/serveroption/pbenv.conf` 配置文件，将行：

      `PB_JAVA=%%%PB_JAVA%%%`

      更改为

      `PB_JAVA=J2SE_location`

   1. 在 Windows 系统上，编辑 `install_dir\pointbase\tools\serveroption\pbenv.bat` 配置文件，将行：

      `PB_JAVA=%%%PB_JAVA%%%`

      更改为

      `PB_JAVA=J2SE_location`

   其中 J2SE_location 为 J2SE 的安装目录。如果已随 Application Server 一起安装了 J2SE，则该 J2SE 默认安装在 `install_dir/jdk`。

   进行此更改后，您可以使用 `startserver` 脚本启动 PointBase。

## Web 服务器

本节列出了 Sun Java System Application Server Enterprise Edition 8.1 2005Q2 所支持的 Web 服务器。

表 2–3 支持的 Web 服务器

Web 服务器 | 版本 | 操作系统
--- | --- | ---
Sun Java System Web Server | 6.1+ | Solaris SPARC 9, 10 Solaris x86 9, 10 Red Hat Enterprise Linux 3 和 4
Apache Web Server | 1.3+, 1.4, 2.0 | Solaris SPARC 9, 10 Solaris x86 10 Red Hat Enterprise Linux 3 和 4 Windows Server 2003 Windows 2000 Advanced Server SP4+ Windows Server 2000 SP4+ Windows XP Pro SP1+
Microsoft IIS® | 5.0+ | Windows Server 2003 Windows 2000 Advanced Server SP4+ Windows Server 2000 SP4+ Windows XP Pro SP1+

## 浏览器

本节列出了 Sun Java System Application Server Enterprise Edition 8.1 2005Q2 所支持的浏览器。

表 2–4 支持的 Web 浏览器

浏览器 | 版本
--- | ---
Mozilla | 1.4, 1.5, 1.6, 1.7.x
Netscape Navigator | 4.79, 6.2, 7.0
Internet Explorer | 5.5 Service Pack 2, 6.0

## HADB 要求和支持的平台

除了硬件和软件要求中列出的要求以外，还需验证系统是否满足下面所列的运行 HADB 的要求。

- 支持的平台

- HADB 服务器主机要求

- HADB 管理主机要求

- HADB 客户机主机要求

注 –

该系统的 Java 组件使用 JDK 1.4.2_02 构建，并且已在 JDK 1.5 上进行了测试。

### 支持的平台

- Solaris (SPARC)—Solaris 8 MU7、Solaris 9 MU7、Solaris 10 RR。

- Solaris (x86)—Solaris 9 MU7、Solaris 10 RR。

- RedHat Enterprise Linux—2.1 U5（仅支持 `ext2` 文件系统，不支持 `ext3`）和 3.0 U4（`ext2` 和 `ext3` 均受支持 。由于会出现过度交换的问题，建议不要使用 U4 之前的更新版本）。请注意，仅在这些 32 位模式下的操作系统中测试了 HADB。还请注意，HADB 不支持以 64 位模式运行的 RedHat Enterprise Linux 3.0，这是由于该操作系统中的一个错误（有关对 HADB 的影响的详细信息，请参见高可用性中的已知错误 6249685）。

- Microsoft Windows—Microsoft Windows 2000 Advanced Server Service Pack 4 和 Microsoft Windows 2003 Enterprise Edition。请注意，HADB 不支持任何即将推出的 64 位模式的 Microsoft Windows 操作系统版本。

### HADB 服务器主机要求

- 最小内存—每个节点需要 320 MB。

- 最小可用磁盘空间—每个节点的 HADB 二进制需要 70 MB。此外，对于每个节点上的测试安装，数据设备还需要 512 MB 的磁盘空间。

- 建议的内存—每个节点需要 512 MB。

- 建议的可用磁盘空间—每台主机的 HADB 二进制需要 70 MB。此外，对于每个节点上的测试安装，数据设备还需要 1200 MB 的磁盘空间。

注 –

请确保在存储 HADB 数据和日志文件的设备上禁用写高速缓存。默认情况下，在有些 Solaris 平台上写高速缓存处于启用状态；例如，Solaris x86。

### HADB 管理主机要求

- 最小内存—128 MB

- 最小可用磁盘空间 — 每台主机的 HADB 二进制需要 70 MB。

### HADB 客户机主机要求

- 最小内存—120 MB

- 最小可用磁盘空间—20 MB

## 升级 Sun Java System Application Server

不支持从任意先前的 Application Server 发行版直接升级。有关从 Application Server 的先前版本升级至当前版本的完整说明，请参阅《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Upgrade and Migration Guide》。

## 切换到支持的 J2SE 版本

如果要使用 Application Server 附带的 PointBase，请下载并使用 J2SE 1.4.2 而不是捆绑的 J2SE 5.0 JVM。要完成此操作，请执行以下步骤：

### 切换到 J2SE 1.4.2

1. 下载 J2SE 1.4.2 SDK（而非 JRE）并将其安装到系统中（如果尚未这样做）。

   可以从 `http://java.sun.com/j2se/1.4.2/` 下载 J2SE 1.4.2 SDK

2. 停止 Application Server。

   可以使用以下命令行：

       install_dir/bin/asadmin stop-domain

   或管理控制台：

   1. 单击 "Application Server" 节点。

   2. 单击“停止实例”。

3. 编辑 `install_dir/config/asenv.conf` 文件（在 Windows 上为 `asenv.bat`），将 `AS_JAVA` 的值更改为指向 J2SE 1.4.2 主目录。

4. 编辑 `as-install/samples/common.properties` 文件，将以 `com.sun.aas.javaRoot...` 开头的行更改为引用 J2SE 1.4.2 主目录。

5. 重新启动 Application Server。

   可以使用以下命令行：

       install_dir/bin/asadmin start-domain

   或管理控制台：

   1. 单击 "Application Server" 节点。

   2. 单击“启动实例”。

## 其他要求

安装 Sun Java System Application Server 软件之前，必须满足以下附加要求。

- 可用空间—临时目录必须具有至少 35MB 的可用空间以便安装 Sun Java System Application Server，以及 250 MB 的可用空间以便安装 SDK。

- 使用卸载程序—如果需要从系统中删除 Application Server，必须使用此软件中包含的卸载程序。如果尝试使用其他方法，则在试图重新安装同一版本或安装新版本时将出现问题。

- 可用端口—您必须具有七个未使用的可用端口。

  - 安装程序自动检测正在使用的端口，并建议将当前未使用的端口用作默认设置。默认情况下，用于 HTTP 的初始默认端口号为 `8080`；用于 HTTPS 的初始默认端口号为 `8181`；用于管理服务器的初始默认端口号为 `4849`。

  - 安装程序将检测已用端口并为您分配其他两个端口：Sun Java System Message Queue（默认情况下，端口号为 7676）和 IIOP（默认情况下，IIOP 的端口号为 3700，IIOP/SSL 的端口号为 1060 和 1061）。如果这些默认端口号正在使用，安装程序将从动态端口范围内指定一个随机端口号（请注意，它不一定是下一个可用的端口号）。

  启动以前安装的服务器 (UNIX)—除非要替换以前安装的服务器，否则在开始安装 Sun Java System Application Server 8.1 之前必须先启动以前安装的服务器。这样，安装程序才能检测到正在使用的端口，从而避免再分配它们用于其他用途。

- 替换以前安装的服务器 (UNIX)—如果您已安装较旧版本的 Sun Java System Application Server，并且要用当前版本的 Application Server 替换它，则在安装新服务器之前应先将其停止。使用安装程序升级向导来升级服务器。

- 关闭防火墙 (Microsoft Windows)－在安装 Sun Java System Application Server 软件之前，必须停止所有防火墙软件，因为默认情况下某些防火墙软件会禁用所有端口。安装程序必须能够准确确定哪些端口可用。

  有关兼容性的更多信息，请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Upgrade and Migration Guide》。

# Enterprise Edition 8.1 发行版中修复的错误

本节列出了由客户提出并且已经解决的 Sun Java System Application Server Enterprise Edition 8.1 产品问题。

错误号 | 说明
--- | ---
4887079 | 用于部署/取消部署以及找出已部署哪些应用程序的可编程化 API。
4911462 | 端口不在可用范围内时会收到不正确的消息。
4918535 | `sun-appserv-deploy()` 不带有支持 `createAndDropTables()` 的标志。
4939749 | `xml：()`Deploytool 不应该自动插入 `lang()` 值。
4946914 | 对群集的部署支持。
4979136 | 基于目录的部署会复制备份目录中的应用程序。
4987274 | 如果 Bean 的远程接口的名称为 `Util()`，则部署失败。
4988818 | 使用 J2SE 1.5 时，透明持久性运行时测试失败。
4992295 | 在命令行界面中部署系统组件成功，但在服务器的日志文件中却记录了一条错误消息。
4994790 | 使用 precompilejsp=true 部署的 JSP 不使用 `sun-web.xml` 中的编译器标志。
4996876 | 检验器与使用 verify=true 进行部署时，会收到不同的报告。
5003356 | 升级工具没有考虑最新的 `server.policy` 文件更新。
5006854 | `asadmin deploy``--virtualservers` 无法进行部署。
5007309 | HTTP 侦听器的接收器线程默认值不正确。
5008941 | 取消部署某个应用程序，然后再次对其进行部署时，JSR88 启动操作失败。
5016848 | 在 Windows 上，JDK JAR 文件高速缓存功能和未关闭的文件会造成某些重新部署操作无法进行。
5017956 | 在 JAR 模块级执行的 `list``-m` 不能列出 EJB。
5030425 | `deploydir` 命令会忽略 `security-role-mapping` 的更改。
5041343 | 不会检查前后带有 "/" 的 `servlet-mapping url-pattern``- -directory`。
5046120 | 部署大型应用程序时，会收到严重类型的日志消息。
6041268 | 没有机制可以禁用 `HTTP TRACE`。
6062410 | 在本地化的计算机上会启动英文版的升级工具。
6067341 | 在 `rmic` 远程接口上，对具有 `ejb-refs` 的 Web 应用程序执行 `deploydir` 命令会失败。
6152752 | 在运行 SPEC J2004 测试期间，会记录 `outofbound` 异常。
6154949 | 连接验证不起作用。
6157310 | 在管理关系期间，运行时会重新装入 `Collection` 字段。
6165491 | 如果非默认域的路径中创建了某个域，则不能启动该域。
6171667 | `domain.xml` 中没有创建生命周期模块属性元素。
6171729 | 在部署 MDB 期间，非字符串型的 RA ActivationSpec 属性会导致 IllegalArgumentException。
6172178 | OSS/J TT TCK 无法从远程应用程序服务器获得 JMS 连接工厂。
6172589 | 优化了对安全管理器的调用。
6183492 | [DataDirect] DB2：在调用 EJB 期间，某些透明持久性应用程序服务器测试会失败并抛出异常。
6184864 | 使用 OR 运算符和包含空的单值 CMRS 的表达式时，EJB QL 查询不会返回结果。
6197393 | Deploytool 经常不在部署描述符中创建 message-destination 元素。
6198796 | 部署应用程序时，EE 样例 `asadmin` 命令需要包含 `availabilityenabled=true()` 选项。
6198981 | 类路径中缺少 `xalan.jar` 文件，会导致空的下拉式列表并且 Web 服务向导会失败。
6199076 | 无法使用 `asant` 脚本运行 Duke bookstore 样例故障转移测试。
6202363 | 群集名称在 `mq-failover` 样例应用程序的一个 `ant` 目标中出现硬编码。
6202606 | JMS 服务配置无法用于 JMS 和 Message Queue 之间的 SSL JMS。
6206176 | Application Server 8.1 要求 `startserv/stopserv` 具有 755 权限。
6207297 | 无法使用默认 SSL 端口号 (443) 以外的端口访问 Application Server。
6207862 | `asadmin create-domain``--help` 生成了一些乱码。

# Enterprise Edition 8.1 Update 2 发行版中修复的错误

本节列出了由客户提出并且已经解决的 Sun Java System Application Server Enterprise Edition 8.1 Update 2 产品问题。

错误号 | 说明
--- | ---
4842830 | JDBC 客户机收到异常“ComStream 已关闭”。
4847716 | 不应使用 execute/executeUpdate 来设置提交模式，因为这可能会导致不需要的行为。请使用标准的 JDBC `setAutocommit()`。
4861326 | 语句池没有将 CREATE SCHEMA 识别为隐含 SET SCHEMA。
4891060 | 侦听套接字时，侦听器会忽略地址指令。
5042351 | 在添加新节点之后创建的新表不能分布到添加的节点上。
5061316 | 重新分段某个表后，对它执行的查询可能会失败，并显示 HADB-E-01792：已删除复制。必须重试查询。
5063175 | 使用同时具有单网/多网的主机时，`hadbm create` 会显示错误消息。
5079029 | 在单台主机上取消注册软件包时，可能会失败，并显示错误消息“该软件包正在被数据库实例使用，无法删除”。
5094611 | 在极少数情况下，需要在管理系统信息库中打开写入事务的管理操作可能会挂起，一直等待事务打开。
5103186 | NSUP 在 Windows 2003 上启动时不能关闭一个网络。
6225613 |
6271063 | 安装/删除 HADB `c` 软件包 (Solaris: SUNWhadbc, Linux: sun-hadb-c) 版本的 symlink `/opt/SUNWhadb/` 会导致出错。
6174781 | `hadbm` 命令状态—重新启动管理代理后的短时间内，节点可能会显示它们的 `nodestate` 状态为“未知”。
6175436 | 如果 `hadbm addnodes` 或 `hadbm refragment` 失败，且显示错误消息 HADB-E-11747“已存在节点组 all_nodes”，请再次运行 `hadbm refragment`。
61746766179084 | 无法运行 configure-ha-cluster。
6178228 6179010 | configure-ha-cluster 失败。
6181845 | 在 Windows 上无法创建大于 2 GB 的数据设备。
6189189 | 给出绝对路径后，`export-http-lb-config` 无法创建 `loadbalancer.xml` 文件名。
6198225 | 快速入门指南中存在输入错误；例如，重复的句子。
6195779 | 某些过滤器下拉式列表中的选项值没有国际化。
6196741 | 升级 J2SE 1.4.x 时，代替捆绑 J2SE 组件的升级 J2SE 组件无法正常使用。
6207616 | 主机关闭后，如果 `hadbm` 命令需要连接到管理代理，则该命令可能会挂起几分钟。
6212791 | 单击树节点时，在右窗格中没有显示任何项。
6216096 | 处于挂起状态的事务可能会导致节点由于“日志缓冲区已满”而出现故障，并且会导致大量事务异常中止。
6225613 | executeUpdate() 中 LOB 的大小不一致。
6227502 | EJB 计时器服务中的初始化错误不应记录为 `SEVERE`。
6228789 | `hadbm delete` 命令失败。
6230415 | HADB-E-21070：操作未在限制的时间内完成，但并未取消，因而可以在以后完成。
6230792 | hadbm：错误 22009：发出的命令在过去 300 秒内无进展。
6232347 | 对于 `asdamin deploy``--help`，`dropandcreatetables` 不完全正确。
6232838 | 不需要的日志调用阻止了对应用程序服务器进行调整。
6232974 | 从 8.0 Platform Edition 升级到 8.1 Enterprise Edition 时，安装程序无法创建节点代理。
6233142 | 安装/卸载 HADB 时，应保留软链接 /opt/SUNWhadb/4，但并非始终都这样。
6233276 | 无法对 URL `-pattern /*.jsp` 进行表单验证。
6233469 | `asadmin` 帮助中的帮助文本不正确。
6233476 | `update-file-user` 及类似命令的帮助文本不正确。
6237567 | “创建管理对象资源”窗口中缺少键 `adminObjectStep2PageHelp`。
6238477 | 无法解析同一应用程序服务器实例中的“corba 名称”EJB 引用。
6239630 | 无法正确映射特定的实体 Bean。
6239837 | 管理 JMS `server-config` 时，重新连接时间间隔的单位和默认值均不正确。
6240661 | 在某些语言环境中，某些消息仍保留为英文。
6241311 | “池空闲超时”字段的说明不正确。
6241368 | 管理控制台登录屏幕和联机帮助无法引用英文浏览器语言。
6243395 | 不能对 JMS 和 JDBC 资源执行事务恢复。
6245922 | Application Server 不断崩溃。
6246426 | 展开 WEB-INF/lib 中的 JAR 文件会泄漏应隐藏的内容。
6249637 | 更改 JDBC 连接池属性后需要重新启动。
6249662 | `Proxy-auth-cert` 的格式不正确。
6250989 | SOAP 元素。`addChildElement` 添加了不带标记的不完整元素。
6252187 | 高可用性单点登录会在不同的领域之间传播主体。
6252810 | 手册页中的 `configure-ha-persistence` 不是最新的。
6253735 | 快速入门中不包含高可用性信息。
6254393 | 捆绑的快速入门中具有过时的发行说明链接。
6254462 | 重新启动数据库后，连接验证代码会抛出 NPE。
6255253 | 捆绑文档中的“如何定购”链接到错误的 URL。
6255440 | 同步的性能改进。
6255458 | `delete-virtual-server` 中存在输入错误。
6255524 | `UpdateTask` ANT 任务不能在 ANT 1.6.2 中执行。
6255564 | 从 Platform Edition 升级到 Enterprise Edition 后，由于管理用户验证失败，因此启动升级后的域也会失败。
6258844 | 升级到 8.1 Update 1 后，文件领域用户登录不起作用。
6258997 | 更正了命令行界面手册页中 `--secure` 选项的说明。
6259125 | `asadmin get` 文档不完善且不清晰。
6262564 | `PrivateKeyProcessor` 不支持通过 `keyIdentifier` 来执行 get。
6262824 | Solaris 10：在全局区域中使用 ma-initd 脚本停止管理代理时，也会停止本地区域中的管理代理。
6263684 | Linux RPM 修补程序生成脚本需要对 `README` 进行手动更改。
6263686 | 生成 svr4 修补程序会在 `README` 中插入错误的条目。
| `package-appclient` 脚本已损坏。
6264969 | 对使用 PointBase 的所有 AS 样例的设置失败：无法将数据库升级到 5.1 版。
6265687 | 安装程序的图像上显示错误的产品版本。
6266183 | 高可用性测试失败：重新启动后领域名称为空。
6267410 | 如果“日志级别”设置为 FINE，则在 `session.invalidate()` 中会发生异常。

# 其他 HADB 信息

本节介绍有关 Application Server 8.1 中所包含的 HADB 实现的其他重要信息。

- HADB 增强功能

- HADB 文件系统支持

- 升级高可用性数据库

- 已知 SQL 限制

- 高可用性负载平衡

## HADB 增强功能

- 实现了新的管理命令 `hadbm setadminpassword`，使用该命令可更改用于数据库管理的密码。此命令通过使用相应的选项，来指示要使用的管理代理以及旧密码和新密码。有关更多信息，请参见 `hadbm setadminpassword` 手册页。

- 现有管理命令 `hadbm listpackages` 已被修改。以前，此命令没有操作数，并且会列出相关管理域中的所有软件包。修改后引入了可选的软件包名称操作数，并且只列出具有该名称的软件包。如果不指定相应的操作数，则列出所有软件包。有关更多信息，请参见 `hadbm listpackages` 手册页。

- 现有管理命令 `hadbm createdomain` 已被修改。将 hostlist 操作数的功能扩展为还可以指定管理代理的端口号。通过这种方法，仅使用 hostlist 操作数就可以完全指定该域。旧的行为仍受支持，以保持向下兼容。有关更多信息，请参见 `hadbm createdomain` 手册页。

- 管理系统的某些错误消息已被修改。这些修改旨在改进错误消息的易懂性、一致性和准确性。详细的修改内容未在本发行说明中列出。

- 安装和卸载行为稍有变化。安装或卸载 HADB 时，应始终保留软链接 `/opt/SUNWhadb/4`，但并非始终都这样。

- 不能再在命令行上输入密码作为命令选项。这与所有使用密码作为命令行选项的 `hadbm` 命令相关。对于 `hadbm` 命令，以前可以通过以下方式输入密码：

  1. 密码文件

  2. 命令行选项

  3. 交互式输入

  方法 2（命令行选项）被认为不安全，因此已过时。如果以这种方法输入密码，将发出警告消息。请改为使用方法 1（密码文件）或方法 3（交互式输入）。在命令行中使用密码的方式将在下一个版本中废弃。请注意，这适用于所有使用命令行密码选项的 `hadbm` 命令。

- HADB 已升级为使用 JGroups 2.2 版，其源代码与 HADB 一起分发。为了支持从先前的 HADB 版本联机升级，HADB 同时附带了 JGroups 2.1 和 2.2。对于 JGroups 2.1，仅提供字节代码。

## HADB 文件系统支持

如果您要将 HADB 配置为使用以下文件系统之一，则需考虑几个重要事项：

- ext2 和 ext3—对于 Red Hat Application Server 3.0，HADB 支持 ext2 和 ext3 文件系统。对于 Red Hat Application Server 2.1，HADB 仅支持 ext2 文件系统。

- `Veritas`—在 Solaris 平台上使用 Veritas 文件系统时，消息`“警告:``直接磁盘 I/O 映射失败”`将写入历史文件。此消息指出：HADB 无法打开用于数据和日志设备的直接 I/O。直接 I/O 可以减少写入磁盘页面的 CPU 耗时，从而提高性能。它还可以降低管理操作系统中的脏数据页面的系统开销。

  要结合使用直接 I/O 和 Veritas 文件系统，请使用以下方法之一：

  - 在以选项 `mincache=direct` 进行安装的文件系统上创建数据和日志设备。此选项将应用于该文件系统上创建的所有文件。有关详细信息，请参见 `mount_vxfs(1M)` 命令。

  - 使用 Veritas Quick I/O 工具对文件系统的文件执行原始 I/O。有关详细信息，请参见《VERITAS File System 4.0 Administrator's Guide for Solaris 》。

    请注意，尚未使用 Application Server 8.1 2005Q2 Update 2 对这些配置进行测试。

    有关使用 Application Server 软件安装和配置 HADB 的信息，请参见《 Application Server Enterprise Edition High Availability Administration Guide》。

## 升级高可用性数据库

- 升级前任务/数据迁移

- 升级过程

- 测试升级

- 特殊的部署和升级信息

### 升级前任务/数据迁移

##### 开始之前

用户应保留 HADB 历史文件、管理代理配置文件、日志文件、系统信息库以及安装路径以外的所有数据设备。如果尚未这样做，应在升级前完成此操作。要移动管理系统信息库和配置文件，请执行以下操作：

1. 停止所有旧的管理代理，但继续运行 HADB 节点。

2. 在每台主机上，将系统信息库目录移到新位置。

3. 在每台主机上，将 `dbconfig` 目录复制到新位置。

4. 在每台主机上，更新 `mgt.cfg` 文件，并为 `dbconfig` 和系统信息库目录设置正确的路径。

5. 使用更新后的 `mgt.cfg` 文件启动管理代理。

### 升级过程

要从 HADB 4.4.x 版升级到 4.4.2-7 版，请执行以下步骤：

1. 根据需要执行上述的升级前任务。

2. 将 HADB 4.4.2-7 版安装到所有 HADB 主机上（安装到不同于 4.4.x 版路径的其他路径中，例如 `/opt/SUNWhadb/4.4.2-7` 中）。

3. 将 HADB 4.4.2-7 版安装到 `hadbm` 客户机主机上（如果该客户机主机的路径与 HADB 主机的不同）。

4. 停止所有 HADB 主机上运行的全部管理代理。

5. 使用新版本的软件和旧的配置文件来启动管理代理进程。在余下的步骤中，请使用在新版本的 `bin` 目录中找到的 `hadbm` 命令。

6. 在管理域中注册该软件包（由于默认的软件包名称为 V4.4，因此可能需要使用其他软件包名称，以免与现有的同名软件包冲突）：

       hadbm registerpackage --packagepath=/opt/SUNWhadb/4.4.2-7 V4.4.2-7

7. 运行 `hadbm listpackages` 命令并检查新软件包是否已在该域中注册。

8. 使用新的 `hadbm` 4.4.2-7 版重新启动数据库。如果需要移动设备和历史文件，请运行联机升级，并在同一操作中为设备和历史文件设置新路径：

       hadbm set packagename=V4.4.2-7,devicepath=new_devpath,
       historypath=new_histpath

   否则，如果设备和历史文件位于安装目录之外，则运行以下命令后，将仅滚动重新启动这些节点：

       hadbm set packagename=V4.4.2-7 database name

9. 检查数据库是否处于“正在运行”状态（使用 `hadbm status` 命令）并且能够正常处理客户机事务。

10. 如果结果有效，随后就可以删除旧安装。在取消注册旧软件包之前，先从 `ma` 系统信息库中删除对旧软件包的所有引用。否则，`hadbm unregisterpackage` 将失败，并显示消息“软件包正在使用”。伪重新配置操作（例如 `hadbm set connectiontrace=same as previous value`）将删除对旧软件包的所有引用。现在，取消注册旧软件包：

        hadbm unregisterpackage [--hosts=host-list] old pacakge name

11. 从文件系统中删除旧安装。

### 测试升级

在 Solaris 上，要测试升级是否成功，请检查是否已正确执行升级：

1. 确保运行的进程使用了新的二进制。在所有 HADB 节点上检查以下路径：

       new path/bin/ma -v
       new path/bin/hadbm -v

2. 检查数据库是否处于运行状态。使用以下命令应该显示所有 HADB 节点都处于“正在运行”状态。

       new path/bin/hadbm status -n

3. 确保使用 HADB 的产品已将其指针更改为指向新的 HADB 路径。

4. 使用 HADB 的产品可以运行自己的升级测试，以检验 HADB 升级是否有效。

   联机升级后，如果新版本无法正常运行，请转回使用以前的 HADB 版本。但是，如果已对管理代理系统信息库进行了更改，则可降级 HADB 本身，但新的管理代理必须继续运行。

### 特殊的部署和升级信息

本节列出有关 HADB 部署和升级的其他信息。

- 部署

- 从 4.4.1 联机升级到 4.4.2

#### 部署

- 仅将设备文件、日志文件和历史文件存储在本地磁盘中，请勿使用远程安装的文件系统。

- 如果在一台主机上存在多个节点，建议将属于每个节点的设备分别存放在不同的磁盘上。否则，磁盘争用会导致性能降低。通过在历史文件中查找此类消息“`注意 - 上次 flush/fputs 时间过长`”可以查看此问题的症状。如果一个节点拥有多个数据设备文件，建议对这些设备文件使用单独的磁盘。

- 使用本地磁盘（最好是与数据设备所用不同的磁盘）在 HADB 主机上安装 HADB 二进制。NFS 延迟或磁盘争用可能导致节点重新启动，并且历史文件中出现警告“`进程已阻塞` `nnn``，最长阻塞时间为` `nnn`”。

- 不要将 hadb 设备、历史文件、管理代理目录和代理配置文件放在 hadb 软件包路径下。因为这会导致在升级更新版本和删除旧软件包路径时出现问题。

- 正常情况下，此版 HADB 最多支持 28 个节点（24 个活动数据节点和 4 个备用节点）。

- 建议使用相同版本的 JDBC 驱动程序和 HADB 服务器。

- 不支持 IPv6，仅支持 IPv4。

- 在 Windows 上，命令行长度限制为 2048 字节。

- 必须将网络配置为可以进行 UDP 多址广播。

- 由于在 RedHat Enterprise Linux 3.0 的 Update 1 到 Update 3 上发现了过度交换，建议不要将其用作部署平台。此问题已在 RedHat Enterprise Linux 3.0 Update 4 中修复。

- 使用实时优先级运行 `NSUP` 时可能出现的情况。

  节点的监控 (`NSUP`) 进程 (`clu_nsup_srv`) 通过及时交换 "heartbeat" 消息来确保 HADB 的高可用性。如果 `NSUP` 与导致资源耗尽的其他进程位于同一位置，则会影响计时。这将导致错误的网络分区和节点重新启动（在此之前，历史文件中会记录一条警告“进程被阻塞 `n` 秒”），同时导致出现异常中止的事务和其他异常情况。

  要解决这一问题，`clu_nsup_srv`（可在 `installpath``/lib/server` 中找到）必须设置 `suid` 位且该文件必须属于超级用户。这可以通过使用以下命令手动实现：

      # chown root clu_nsup_srv
      # chmod u+s clu_nsup_srv

  这将导致 `clu_nsup_srv` 进程以`超级用户`的身份启动，而这又使该进程在启动后能够自动为其本身分配实时优先级。要通过使用 `setuid` 来避免任何安全性影响，请尽早设置实时优先级，并在更改优先级后立即将进程返回到有效的 uid。其他 HADB 进程会将其优先级降低为分时优先级。

  如果 NSUP 无法设置实时优先级，则它会发出一条警告“无法设置实时优先级”（`unix: errno 将设置为 EPERM`），该警告将记录在 `ma.log` 文件中，并且 NSUP 在没有实时优先级的情况下继续运行。

  以下是无法设置实时优先级的情况，例如：

  - 安装在 Solaris 10 非全局区域中时

  - 在 Solaris 10 中调用 `PRIV_PROC_LOCK_MEMORY`（允许进程锁定物理内存中的页）和/或 `PRIV_PROC_PRIOCNTL` 权限时

  - 用户关闭 `setuid` 权限时

  - 用户将本软件安装为 tar 文件（`App.server` 的非根安装选项）时

  `clu_nsup_srv` 进程不会大量占用 CPU，其资源占用少，并且在使用实时优先级运行时不会影响系统性能。

- 为 Solaris 的 HADB 配置 IP 网络多路径（仅在 Solaris 9 上进行过测试）。

  Sun 建议对运行 HADB 的 Solaris 主机设置网络多路径，以便尽可能确保最高的网络可用性。《IP Network Multipathing Administration Guide》中详细介绍了网络多路径设置。如果打算将多路径与 HADB 一起使用，请参阅《IP Network Multipathing Administration Guide》中的 "Administering Network Multipathing" 一节，以便先设置多路径，然后按照如下所属针对 HADB 调整多路径设置。《IP Network Multipathing Administration Guide》是 Solaris 9 System Administrator Collection 的一部分，并且可以从 `http://docs.sun.com` 下载。

  - 设置网络接口故障检测时间

    为了使 HADB 能够正确支持多路径故障转移，网络接口故障检测时间不能超过 1000 毫秒，此时间由 `/etc/default/mpathd` 中的 `FAILURE_DETECTION_TIME` 参数指定。如果此参数的原始值较高，请编辑文件并将其值更改为 `1000`：

        FAILURE_DETECTION_TIME=1000

    为了使更改生效，执行以下命令：

        pkill -HUP in.mpathd

  - 与 HADB 一起使用的 IP 地址

    如 Solaris IP Network Multipathing Administration Guide 中所述，多路径功能涉及将物理网络接口分组为多路径接口组。在此类组中，每个物理接口均包含两个与其关联的IP 地址：物理接口地址和测试地址。只有物理接口地址可用于传输数据，而测试地址仅供 Solaris 内部使用。运行 `hadbm create --hosts` 时，应该仅使用多路径组中的一个物理接口地址来指定每台主机。

  - 示例

    假设主机 1 和主机 2 分别具有两个物理网络接口。在每台主机上，均将这两个接口设置为多路径组，并且运行 `ifconfig -a` 将产生如下结果：

    主机1

        bge0: flags=1000843<mtu 1500 index 5 inet 129.159.115.10 netmask ffffff00
        broadcast 129.159.115.255 groupname mp0
        bge0:1: flags=9040843<mtu 1500 index 5 inet 129.159.115.11 netmask ffffff00
        broadcast 129.159.115.255
        bge1: flags=1000843<mtu 1500 index 6 inet 129.159.115.12 netmask ffffff00
        broadcast 129.159.115.255 groupname mp0
        bge1:1: flags=9040843<mtu 1500 index 6 inet 129.159.115.13 netmask ff000000
        broadcast 129.159.115.255

    主机 2

        bge0: flags=1000843<mtu 1500 index 3 inet 129.159.115.20 netmask ffffff00
        broadcast 129.159.115.255 groupname mp0
        bge0:1: flags=9040843<mtu 1500 index 3 inet 129.159.115.21 netmask ff000000
        broadcast 129.159.115.255
        bge1: flags=1000843<mtu 1500 index 4 inet 129.159.115.22 netmask ffffff00
        broadcast 129.159.115.255 groupname mp0
        bge1:1: flags=9040843<mtu 1500 index 4 inet 129.159.115.23 netmask ff000000
        broadcast 129.159.115.255

    在此示例中，两台主机的物理网络接口就是列出的 `bge0` 和 `bge1`。而列出的 `bge0:1` 和 `bge1:1` 是多路径测试接口（它们在 `ifconfig` 输出中标记为 DEPRECATED），如《IP Network Multipathing Administration Guide》中所述。

    要在此环境中设置 HADB，请从每个节点选择一个物理接口地址。在此示例中，我们从主机 1 选择 `129.159.115.10` 并从主机 2 选择 `129.159.115.20`。要使用每台主机的一个数据库节点创建数据库，请对 `hadbm create` 使用以下参数：

        --host 129.159.115.10,129.159.115.20

    要使用每台主机的两个数据库节点创建数据库，请使用以下参数：

        --host 129.159.115.10,129.159.115.20,129.159.115.10,129.159.115.20

    在上述两个示例中，两台主机上的 `ma.server.mainternal.interfaces` 变量应设置为 `129.159.115.0/24`。

#### 从 4.4.1 联机升级到 4.4.2

不可能从 4.2 或 4.3 联机升级到 4.4。但是，4.4 支持未来版本的联机升级。要从 4.4.1 升级到 4.4.2，请执行以下步骤：

1. 将 4.4.2 安装到所有 HADB 主机上（安装到不同于 4.4.1 版路径的其他路径中，例如在 `/opt/SUNWhadb/4.4.2-6` 中）。

2. 将新版本安装到 `hadbm client` 主机上。

3. 停止 HADB 主机上运行的所有管理代理。

4. 使用新版本的软件和旧的配置文件来启动管理代理进程。在余下的步骤中，请使用在新版本的 `bin` 目录中找到的 `hadbm` 命令。

5. 在管理域中注册该软件包（由于默认的软件包名称为 `V4.4`，因此可能需要使用其他软件包名称，以免与现有的同名软件包冲突）：

       hadbm registerpackage --packagepath=/opt/SUNWhadb/4.4.2-6 V4.4.2

6. 使用新版本重新启动数据库（以下命令将滚动重新启动这些节点）：

       hadbm set packagename=V4.4.2 database_name

7. 检查数据库是否处于“正在运行”状态（使用 `hadbm status` 命令）并且能够正常处理客户机事务。

8. 如果一切运行正常，随后就可以删除旧安装。

   在取消注册旧软件包之前，先从 `ma` 系统信息库中删除对旧软件包的所有引用。否则，`hadbm unregisterpackage` 将失败，并显示消息“软件包正在使用”。伪重新配置操作（例如 hadbm set connectiontrace=`<same_as_previous_value>`）将删除对旧软件包的所有引用。现在，取消注册旧软件包：

       hadbm unregisterpackage [--hosts=<host_list>] <old_package_name>

   如 HADB installation instructions 所述，从文件系统中删除旧安装。

## 已知 SQL 限制

- 无法在表中创建 `UNIQUE` 二级索引。

- 除非表达式 `(DISTINCT column)` 是唯一选定的表达式，否则不允许在聚合表达式中使用该表达式。

- 创建所有表时都必须定义主键（即，不支持没有主键的表）。

- 不支持 `FULL OUTER JOIN`。

- 不支持 `IN` 子查询（此类子查询为表子查询）；例如：

      SELECT SNAME FROM S WHERE (S1#,S2#) IN (SELECT S1#,S2# FROM SP
      WHERE P#='P2')

- 不支持除 `NOT NULL` 和 `PRIMARY KEY` 以外的约束。

- 不能为资源指定新的拥有者。但是，如果执行此操作，授予当前拥有者的权限不会授予新拥有者。

- 两个或两个以上的嵌套 `NOT EXISTS` 子查询中，如果其每个子查询不直接与外层查询关联，则不受支持。

- 不支持列权限。

- 仅允许在 `VALUES` 子句中使用行值构造函数。

- 不能使用子查询作为行值构造函数中的值表达式。

- 创建主键时，不能使用以下数据类型：

  - `REAL`

  - `FLOAT`

  - `DOUBLE PRECISION`

  - `DECIMAL`

  - `NUMERIC`

## 高可用性负载平衡

Application Server 包括 HTTP、IIOP 和 JMS 客户机的负载平衡；HTTP 会话故障转移支持；EJB 群集和故障转移支持；具有高可用性的 EJB 计时器；分布式事务恢复；对持续式应用程序升级的支持；以及一个用于存储 J2EE 应用程序瞬间状态的高可用性数据库。

可用性允许对群集中的 Application Server 实例进行故障转移保护。一个 Application Server 实例出现故障时，其他 Application Server 实例将接管指定给该故障服务器的会话。会话信息存储在 HADB 中。HADB 支持 HTTP 会话的持久性、有状态会话 Bean 和单点登录证书。

# Application Server 产品发行版

Application Server 产品以多种方式提供。下表列出了本产品的各种提供机制。

Application Server 产品发行版 | 提供机制
--- | ---
Sun Java Enterprise System 的 Application Server Enterprise Edition 组件。 | 基于文件的分发 需要通过 Sunsolve 进行修补程序安装
Application Server 标准版和 Enterprise Edition 独立产品 | 基于文件的分发和基于软件包的分发

# 兼容性问题

在 Sun Java System Application Server Enterprise Edition 的下一个主要发行版中，将引入以下不兼容问题：

- 尽管 HTTP 服务将继续使用 DNS 高速缓存以获得最佳性能，但是 DNS 高速缓存的监视功能将不再可用。

- 针对 HTTP 文件高速缓存的支持将被修改，这会导致配置和监视功能的改变。

- 访问日志轮转后缀的格式将更改为 `http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html` 中指定的日期和时间对象所支持的格式。将继续支持此发行版中的默认值 "`%YYYY;%MM;%DD;-%hh;h%mm;m%ss;s`"，但不再支持其他任何变化。

- 所有不再受支持的 `domain.xml` 元素、属性和特性，在服务器日志中将标记为警告，而在升级日志文件中则标记为已过时。

- 监视视图中不再显示 `server.http-service.dns` 节点。

- 可能会删除 `server.http-service.file-cache` 节点的某些属性。因此，如果 `asadmin` 监视命令试图访问这些节点的已删除属性，该命令将失败。

## Deploytool

Deploytool 将不再可用。NetBeans IDE 中提供相同的功能。有关更多信息以及要规划迁移，请参见 `http://www.netbeans.org/kb/` 上适用于 NetBeans 4.1 的 J2EE 1.4 教程。

## 验证器

- 验证器 GUI 模式（由 `verifier -u` 调用）将不再可用。NetBeans IDE 中将提供相同的功能。

- 使用验证器工具时，应用程序验证的默认模式将从“验证 J2EE 规则”变为“验证 J2EE 规则和 Sun Application Server 配置规则”。也就是说，在默认情况下，验证器将测试应用程序是否满足 J2EE 规则以及是否配置为在 Sun Application Server 上运行。验证器命令中有一个命令行开关，用于仅测试应用程序是否满足 J2EE 规则。

## 类加载器更改

在当前发行版中，可以在 JVM 系统类路径中找到添加到 `domain.xml`（应用服务器配置文件）的 `classpath-prefix`、`server-classpath` 和 `classpath-suffix` 属性中的 JAR 和目录条目。依赖于这种行为的应用程序可能会使用类 `java.lang.ClassLoader` 中的以下方法，访问 JVM 系统类路径中的类或其他资源：

- `getSystemClassLoader()`

- `getSystemResource()`

- `getSystemResourceAsStream()`

- `getSystemResources`

在下一个主要发行版中，添加到 `classpath-prefix`、`server-classpath` 和 `classpath-suffix` 中的 JAR 和目录条目在 JVM 系统类路径中将不再可用。如果应用程序使用上述方法之一，Sun 强烈建议使用无需假定资源包含在系统类路径中的等效方法。不依赖于 JVM 系统类路径的等效方法可在 `java.lang.ClassLoader` 中获得，并应尽量使用这些方法；例如：

##### 示例 2–1 旧代码

    java.net.URL url = ClassLoader.getSystemResource
    ("com/acme/tools/tools.properties");

##### 示例 2–2 建议的更改

    java.net.URL url = this.getClass().getClassLoader().getResource
    ("com/acme/tools/tools.properties");

如果不能更改此代码，可以选择使用下一个发行版中将添加的一个新配置选项，以便设置 JVM 系统类路径。

## Web 服务安全性配置

使用 `wss-client-config.xml` 和 `wss-server-config.xml` 文件可以配置 Web 服务的安全性。请注意，这些配置文件的内容和名称不稳定，可能会更改。但等效的功能可以继续使用。

# J2EE 支持

Sun Java System Application Server Enterprise Edition 8.1 2005Q2 支持 J2EE 1.4 平台。下表介绍了 J2EE 1.4 平台上可用的增强 API。

表 2–5 J2EE 1.4 平台上可用的 API

API | 说明
组件
应用程序和应用程序客户机 | 通过 XML 模式实现标准部署描述符
Enterprise JavaBeans (EJB) 2.1 | 计时器服务和 EJB Web 服务端点
Java Servlet 2.4 | Web 服务端点过滤器
JavaServer Pages (JSP) 2.0 体系结构 | 表达式语言和标记库
J2EE Connector Architecture 1.5 | 内嵌资源适配器和 Java 消息服务 (JMS) 插件化
Web 服务
Java Web Services Developer Pack 1.5 | 用于构建、测试和部署 XML 应用程序、Web 服务和 Web 应用程序的集成工具包
用于基于 XML 的远程过程调用的 Java API (JAX-RPC) 1.1 | 用于 WSDL 和 Java 技术的映射以及对开发 Web 服务客户机和端点的支持
WS-I 基本配置文件 1.0 | 使用 WSDL 和 SOAP 启用互操作性的元素
Java 的带附件的 SOAP API (SAAJ) 1.2 | 用于基于 SOAP 的消息传送的 API；帮助创建带有附件的 SOAP 消息
用于 XML 注册表 的 Java API (JAXR) 1.0 | 统一且标准的 API，用于访问 XML 注册表，例如用于通用说明、发现和集成（UDDI 和 ebXML）的 XML 注册表
其他
J2EE Deployment 1.1 | 启用部署 J2EE 组件和应用程序的标准 API
J2EE Management 1.0 | 管理 J2EE 平台的信息模型的定义
Java Management Extensions (JMX) 1.2 | 标准管理 API
Java 容器授权合同 (JACC) 1.0 | J2EE Application Server 和授权策略提供器之间的安全性合同的定义
用于 XML 处理的 Java API (JAXP) 1.2 | 应用程序可以用来解析和变换 XML 文档的 API；还添加了对处理 XML 模式的支持
JMS 1.1 | 一种消息传送标准，使 J2EE 应用程序组件可以创建、发送、接收和读取消息；还添加了对用于队列和主题的统一 API 的支持
JavaMail 1.3 | 一组建立邮件系统模型的抽象类；还包括对 API 的细微更新

# 高性能

Application Server 包括 HTTP、IIOP 和 JMS 客户机的负载平衡；HTTP 会话故障转移支持；EJB 群集和故障转移支持；具有高可用性的 EJB 计时器；分布式事务恢复；对持续式应用程序升级的支持；以及一个用于存储 J2EE 应用程序瞬间状态的高可用性数据库。

可用性允许对群集中的 Application Server 实例进行故障转移保护。一个 Application Server 实例出现故障时，其他 Application Server 实例将接管指定给该故障服务器的会话。会话信息存储在 HADB 中。HADB 支持 HTTP 会话的持久性、有状态会话 Bean 和单点登录证书。

# 可伸缩性

Application Server 可以通过服务器实例的群集和请求负载平衡来支持水平可伸缩性。它也可以实现业内领先的支持大型多处理器计算机的垂直可伸缩性。可以对集成消息代理进行群集以获得更佳的可伸缩性和可用性。从 HTTP 客户机访问的客户机、基于 RMI/IIOP 的丰富客户机应用程序、Web 服务客户机和 JRM 客户机可被负载平衡到 Application Server 群集。

# JavaServer Faces 1.1 支持

Sun Java System Application Server Enterprise Edition 8.1 支持 JavaServer Faces 1.1 技术。JavaServer Faces 技术由一组服务器端 API 组成，这些 API 表示用于管理其状态、事件、处理和输入验证的用户界面组件。这些 API 还定义了页面导航并支持国际化和辅助功能。您可以使用 JSP 自定义标记库添加自定义用户界面组件。

使用 JavaServer Faces 技术进行开发时，开发团队的每个成员可以集中开发整个进程的单个部分，然后由一个简单的编程模型将这些部分连接起来，从而使开发周期更为简单高效。

- Previous: 第 1 章 概述
- Next: 第 3 章 已知问题和限制

- © 2010, Oracle Corporation and/or its affiliates