Sun Java System Application Server Enterprise Edition 8.1 2005Q2 管理指南

第 8 章 J2EE 容器

本章介绍了如何配置服务器中包含的 J2EE 容器。本章包含以下几节:

关于 J2EE 容器

本节介绍了 Application Server 附带的 J2EE 容器。

J2EE 容器的类型

J2EE 容器为 J2EE 应用程序组件提供运行时支持。J2EE 应用程序组件使用容器的协议和方法访问服务器提供的其他应用程序组件和服务。Application Server 提供了应用程序客户机容器、applet 容器、Web 容器和 EJB 容器。有关显示容器的示意图,请参见Application Server 体系结构部分。

Web 容器

Web 容器是用于托管 Web 应用程序的 J2EE 容器。Web 容器通过为开发者提供运行 Servlet 和 JavaServer Pages(JSP 文件)的环境来扩展 Web 服务器的功能。

EJB 容器

企业 Bean(EJB 组件)是包含商业逻辑的 Java 编程语言服务器组件。EJB 容器提供对企业 Bean 的本地访问和远程访问。

企业 Bean 分为三种类型:会话 Bean、实体 Bean 和消息驱动 Bean。会话 Bean 表示瞬态对象和进程,并且通常由单个客户机使用。实体 Bean 表示持久性数据,通常保留在数据库中。消息驱动 Bean 用于将消息异步传送到应用程序模块和服务中。

容器负责创建企业 Bean、将企业 Bean 绑定到命名服务、以便其他应用程序组件可以访问企业 Bean、确保仅授权的客户机有权访问企业 Bean 的方法、将 Bean 的状态保存到持久性存储、高速缓存 Bean 的状态、并在必要时激活或钝化 Bean。

有关 J2EE 容器的管理控制台任务

配置常规 Web 容器设置

在本版本中,管理控制台中没有用于 Web 容器的容器范围的设置。

配置 Web 容器会话

本节介绍了 Web 容器中的 HTTP 会话设置。HTTP 会话是唯一将状态数据写入持久性存储的 Web 会话。

Procedure设置会话超时值

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“Web 容器”节点。

  4. 单击“会话属性”选项卡。

  5. 在“会话超时”字段中,输入会话有效的秒数。

  6. 单击“保存”。

Procedure配置管理器属性

会话管理器使您可以配置如何创建和销毁会话、会话状态存储位置和最大会话数。

要更改会话管理器设置,请执行以下步骤:

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“Web 容器”节点。

  4. 单击“管理器属性”选项卡。

  5. 设置“Reap 时间间隔”的值。

    “Reap 时间间隔”字段是从存储中删除非活动会话数据之前的秒数。

  6. 设置“最大会话数”的值。

    “最大会话数”字段是允许的最大会话数目。

  7. 设置“会话文件名”值。

    “会话文件名”字段是包含会话数据的文件。

  8. 设置“会话 ID 生成器类名称”值。

    “会话 ID 生成器类名”字段使您可以指定用于生成唯一的会话 ID 的自定义类。每个服务器实例只允许有一个会话 ID 生成器类,并且群集中的所有实例必须使用同一会话 ID 生成器,以防止会话密钥冲突。

    自定义会话 ID 生成器类必须实现 com.sun.enterprise.util.uuid.UuidGenerator 接口:

    package com.sun.enterprise.util.uuid;
    
    public interface UuidGenerator {
    
        public String generateUuid();
        public String generateUuid(Object obj);  //obj is the session object
    }

    类必须位于 Application Server 类路径中。

  9. 单击“保存”。

Procedure配置存储属性

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“Web 容器”节点。

  4. 单击“存储属性”选项卡。

  5. 设置“Reap 时间间隔”。

    “Reap 时间间隔”字段是从存储中删除非活动会话数据之前的秒数。

  6. 单击“保存”。

配置常规 EJB 设置

本节介绍了以下适用于服务器上所有企业 Bean 容器的设置:

要覆盖每个容器的默认值,请调整企业 Bean 的 sun-ejb-jar.xml 文件中的值。有关详细信息,请参见 Application Server Developer’s Guide

会话存储位置

“会话存储位置”字段指定在文件系统上存储钝化 Bean 和持久的 HTTP 会话所在的目录。

钝化 Bean 是已将其状态写入到文件系统上的文件中的企业 Bean。通常,钝化的 Bean 已空闲一段时间,并且当前未被客户机访问。

与钝化 Bean 类似,持久的 HTTP 会话是已将其状态写入到文件系统上的文件中的各个 Web 会话。

“提交选项”字段用于指定容器如何高速缓存事务之间的钝化实体 Bean 实例。

“选项 B”用于高速缓存事务之间的实体 Bean 实例,并且是默认选项。选项 C 用于禁用高速缓存。

Procedure配置 EJB 池设置

容器维护了一个企业 Bean 池,以便在不创建 Bean 来实现性能的情况下响应客户机请求。这些设置仅适用于无状态会话 Bean 和实体 Bean。

如果在使用已部署的企业 Bean 的应用程序中遇到性能问题,创建池或增加现有池维护的 Bean 的数目有助于提高应用程序的性能。

默认情况下,容器维护企业 Bean 池。

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“EJB 容器”节点。

  4. 在“池设置”下的“初始和最小池大小”字段中,输入容器在池中创建的 Bean 的最小数目。

  5. 在“最大池大小”字段中,输入任何时候容器在池中维护的 Bean 的最大数目。

  6. 在“池调整大小数量”字段中,输入当 Bean 处于空闲状态的时间超过“池空闲超时”中指定的时间时要从池中删除的 Bean 的数目。

  7. 在“池空闲超时”字段中输入在将池中的 Bean 从池中删除之前 Bean 可以保持空闲状态的时间(以秒为单位)。

  8. 单击“保存”。

  9. 重新启动 Application Server。

Procedure配置 EJB 高速缓存设置

容器为大多数使用过的企业维护了企业数据高速缓存。这将允许容器更迅速地响应其他应用程序模块对企业 Bean 的数据请求。本节只适用于有状态会话 Bean 和实体 Bean。

被高速缓存的企业处于以下三种状态之一:活动、空闲或已钝化。活动企业 Bean 是当前正被客户机访问的企业 Bean。空闲企业 Bean 的数据当前保存在高速缓存中,但没有客户机访问 Bean。钝化 Bean 的数据是被临时存储的,如果客户机请求此 Bean,其数据将被读回高速缓存中。

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“EJB 容器”节点。

  4. 在“最大高速缓存大小”字段中调整最大高速缓存大小。

    增加要缓存的 Bean 的最大数目,以消除创建和删除 Bean 的系统开销。但是,如果增加高速缓存,服务器将消耗更多内存和资源。请确保操作环境足够用于高速缓存设置。

  5. 在“高速缓存大小调整数量”字段中调整高速缓存大小调整数量。

    达到高速缓存的 Bean 的最大数目之后,容器将从备份存储中删除一些钝化 Bean,默认设置为 32。

  6. 在“高速缓存空闲超时”字段中,调整为实体 Bean 预定的高速缓存清除速率(以秒为单位)。

    如果高速缓存的实体 Bean 在特定时间内一直处于空闲状态,它将被钝化。即将 Bean 的状态写入备份存储。

  7. 在“删除超时”字段中,调整将有状态会话 Bean 从高速缓存或钝化存储中删除之前的时间(以秒为单位)。

  8. 在“删除选择策略”字段中,配置容器用于删除有状态会话 Bean 的策略。

    容器将根据在“删除选择策略”字段中设置的策略决定删除哪个有状态会话 Bean。容器可使用三种可能的策略从高速缓存中删除 Bean:

    • 最近不使用 (NRU)

    • 先进先出 (FIFO)

    • 最近最少使用 (LRU)

    NRU 策略删除最近未使用的 Bean。FIFO 策略删除高速缓存中最早的 Bean。LRU 策略删除最近最少访问的 Bean。默认情况下,容器使用 NRU 策略。

    通常使用 FIFO 策略删除实体 Bean。

  9. 单击“保存”。

  10. 重新启动 Application Server。

配置消息驱动 Bean 设置

消息驱动 Bean 的池与配置 EJB 池设置中介绍的会话 Bean 的池类似。默认情况下,容器维护消息驱动 Bean 的池。

要调整该池的配置,请执行以下步骤:

Procedure配置 MDB 池设置

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“EJB 容器”节点。

  4. 单击“MDB 设置”选项卡。

  5. 在“池设置”下的“初始和最小池大小”字段中,输入容器在池中创建的消息 Bean 的最小数目。

  6. 在“最大池大小”字段中,输入任何时候容器在池中维护的 Bean 的最大数目。

  7. 在“池调整大小数量”字段中,输入当 Bean 处于空闲状态的时间超过“池空闲超时”中指定的时间时要从池中删除的 Bean 的数目。

  8. 在“池空闲超时”字段中,输入在将池中的 Bean 从池中删除之前 Bean 可以保持空闲状态的时间(以秒为单位)。

  9. 单击“保存”。

  10. 重新启动 Application Server。

配置 EJB 计时器服务设置

计时器服务是由企业 Bean 容器提供的用于安排企业 Bean 使用的通知或事件的持久性和事务性通知服务。所有企业 Bean(有状态会话 Bean 除外)均可从计时器服务接收通知。关闭或重新启动服务器时,服务设置的计时器不会被销毁。

Procedure配置计时器服务

  1. 在树组件中,选择“配置”节点。

  2. 选择要配置的实例:

    • 要配置特定的实例,请选择该实例的配置节点。例如,对于默认实例 server,请选择 server-config 节点。

    • 要配置所有实例的默认设置,请选择 default-config 节点。

  3. 选择“EJB 容器”节点。

  4. 单击“EJB 计时器服务”选项卡。

  5. 在“最小传送时间间隔”字段中设置最小传送时间间隔(以毫秒为单位)。

    最小传送时间间隔是特定计时器的下一个计时器到期之前允许的最小毫秒数。如果此时间间隔设置得过小,可能会导致服务器过载。

  6. 在“最多重新传送次数”字段中,设置计时器服务尝试传送通知的最大次数。

  7. 在“重新传送时间间隔”字段中,设置两次重新传送尝试之间的时间间隔(以毫秒为单位)。

  8. 单击“保存”。

  9. 重新启动 Application Server。

Procedure将外部数据库与计时器服务一起使用

默认情况下,计时器服务使用嵌入式数据库存储计时器。

  1. 按照创建 JDBC 资源中的描述,设置数据库的 JDBC 资源。

  2. 在“计时器数据源”字段中输入资源的 JNDI 名称。

  3. 单击“保存”。

  4. 重新启动 Application Server。

    样例计时器数据库创建文件是为位于 install-dir /lib/install/databases/ 中的 PointBase 和 Oracle 提供的。