Sun Java System Application Server 9.1 管理指南

关于 JDBC 连接池

连接池是用于特定数据库的一组可重复使用的连接。使用管理控制台创建池时,管理员实际上是在定义到特定数据库的连接的各个方面。

创建池之前,您必须首先安装并集成 JDBC 驱动程序。设置“创建连接池”页面时,必须输入特定于 JDBC 驱动程序和数据库供应商的特定数据。继续创建之前,请先收集以下信息:

编辑 JDBC 连接池

“编辑 JDBC 连接池”页面使您可以更改现有池的所有设置(池的名称除外)。

  1. 更改常规设置。

    常规设置的值取决于安装的特定 JDBC 驱动程序。这些设置是 Java 编程语言中的类名或接口名称。

    参数 

    说明 

    数据源类名称 

    实现 DataSource 和/或 XADataSource API 的特定于供应商的类名。该类位于 JDBC 驱动程序中。

    资源类型 

    选项包括 javax.sql.DataSource(仅本地事务) 、javax.sql.XADataSource(全局事务)和 java.sql.ConnectionPoolDataSource(本地事务,性能可能会提高)。

  2. 更改池设置。

    一组物理数据库连接保存在池中。应用程序请求连接时,将从池中删除该连接;而应用程序释放该连接之后,连接将返回到池中。

    参数 

    说明 

    初始和最小池大小 

    池中连接的最小数目。该值还确定了首次创建池或应用程序服务器启动时被置于池中的连接的数目。 

    最大池大小 

    池中连接的最大数目。 

    池调整大小数量 

    当池分别向最大池大小增加和向最小池大小减小时,将在批处理中调整其大小。此值确定批处理中的连接数目。如果将该值设置得过大,则会延迟连接创建和回收;如果将该值设置得过小,则会降低效率。 

    空闲超时 

    连接在池中保持空闲的最长时间(以秒为单位)。一旦超过此时间,即从池中删除该连接。 

    最长等待时间 

    在达到连接超时之前,请求连接的应用程序所等待的时间。由于默认等待时间过长,应用程序可能会出现无限期挂起的情况。 

  3. 更改连接验证设置。

    (可选)应用程序服务器可以在将连接传送给应用程序之前验证连接。如果由于网络出现故障或数据库服务器崩溃造成数据库不可用,此验证将允许应用程序服务器自动重新建立数据库连接。连接验证会带来额外开销,并会导致性能稍有下降。

    参数 

    说明 

    连接验证 

    选中“需要”复选框以启用连接验证。 

    验证方法 

    应用程序服务器可以使用三种方法来验证数据库连接:自动提交、元数据和表。 

    自动提交和元数据-应用服务器通过调用 con.getAutoCommit()con.getMetaData() 方法来验证连接。


    注 –

    由于许多 JDBC 驱动程序高速缓存了这些调用的结果,因此这两种方法无法始终提供可靠的验证。请与驱动程序供应商进行核实,以确定这些调用是否被高速缓存。


    表-应用程序将查询指定的数据库表。表必须存在并且可以访问,但不要求表的行数。请不要使用包含许多行的现有表或经常访问的表。 

    表名 

    如果从“验证方法”组合框中选择了表,请在此指定数据库表的名称。 

    一旦失败 

    如果选中标有“关闭所有连接”的复选框,则单个连接失败时,应用程序服务器将关闭池中的所有连接,然后重新建立这些连接。如果未选中此复选框,则仅当要使用各个连接时才会重新建立连接。 

    允许非组件调用方 

    如果要启用池以供非组件调用方(如 Servlet 过滤器和生命周期模块)使用,请单击此复选框。 

  4. 更改事务隔离设置。

    由于许多用户通常可以并行访问一个数据库,因此可能出现一个事务在更新数据而另一个事务尝试读取同一数据的情况。事务的隔离级别定义了正在更新的数据对于其他事务的可见程度。有关隔离级别的详细资料,请参见数据库供应商的文档。

    参数 

    说明 

    非事务连接 

    如果希望 Application Server 返回所有非事务连接,请单击此复选框。 

    事务隔离 

    使您可以为该池的连接选择事务隔离级别。如果不指定此参数,连接将使用 JDBC 驱动程序提供的默认隔离级别进行操作。 

    保证隔离级别 

    该项仅在指定了隔离级别的情况下才适用。如果选中“保证”复选框,则从池中获取的所有连接都具有相同的隔离级别。例如,如果上次使用连接时通过编程方式(使用 con.setTransactionIsolation)更改了连接的隔离级别,此机制会将状态更改回指定的隔离级别。

  5. 更改属性。

    在“其他属性”表中,可以指定数据库名称 (URL)、用户名和密码等属性。由于随数据库供应商的不同,属性也会有所不同,因此请参考供应商的文档以了解有关详细信息。

编辑 JDBC 连接池高级属性

为帮助诊断连接泄漏和改进易用性,Application Server 9.1 提供了几个新属性以便在创建连接池时对其进行配置。

  1. 打开“高级”选项卡并指定以下属性。

    属性 

    说明 

    名称 

    要编辑其属性的 JDBC 连接池的名称。但是,您不能更改池名称。 

    语句超时 

    在该时间后将终止运行时间异常长的查询(以秒为单位)。Application Server 将在所创建的语句上设置 "QueryTimeout"。默认值 -1 表示未启用该属性。 

    包装 JDBC 对象 

    设置为 true 时,应用程序将获取 Statement、PreparedStatement、CallableStatement、ResultSet、DatabaseMetaData 的包装 jdbc 对象。默认值为 false。 

  2. 指定下表中所述的连接设置。

    属性 

    说明 

    最多验证一次 

    经过该时间后最多对连接验证一次(以秒为单位)。这将有助于减少连接的验证请求次数。默认值 0 表示未启用连接验证。 

    泄漏超时 

    用于跟踪连接池中连接泄漏的时间量(以秒为单位)。默认值 0 表示禁用了连接泄漏跟踪。如果启用了连接泄漏跟踪,则可以在“监视资源”选项卡中获取有关连接泄漏次数的统计信息。要查看此选项卡,请转到“应用服务器”>“监视”>“资源”。 

    泄漏回收 

    如果启用此选项,则泄漏的连接将在泄漏连接跟踪完成后恢复到池中。 

    创建重试尝试次数 

    在创建新连接的过程中出现故障时将进行的尝试次数。默认值 0 表示将不进行再次创建连接的尝试。 

    重试时间间隔 

    指定创建连接的两次尝试之间的时间间隔(以秒为单位)。默认值为 10 秒。仅当“创建重试尝试次数”的值大于 0 时才使用此属性。 

    延迟连接登记 

    仅当在方法中实际使用某个资源时,才启用此选项将该资源登记到事务。 

    延迟关联 

    对连接执行操作时,延迟关联连接。此外,当事务完成且组件方法结束时,将对它们取消关联,这将有助于物理连接的重复使用。默认值为 false。 

    与线程关联 

    启用此选项可将连接与线程关联,以便该线程需要连接时,它可以重复使用已经与自己关联的连接,因此不会产生从池中获取连接的开销。默认值为 false。 

    匹配连接 

    使用此选项可打开/关闭池的连接匹配。如果管理员知道池中的连接始终都是同构的,因此资源适配器不需要匹配从池中选取的连接,则可以将其设置为 false。默认值为 false。 

    最大连接使用次数 

    指定池应该重复使用连接的次数。连接在重复使用指定的次数后将被关闭。这是很有用的,例如用来避免语句泄漏。默认值 0 表示将不重复使用连接。