DB2 Universal Database TM通过两个为数据库访问所提供的编程接口(API),JDBC 和 SQLJ,可支持 Java 编程环境。而这些接口的实现就称作 Java 驱动程序。我们将首先介绍这些驱动程序并且描述 DB2 对它们的支持。然后,我们将考察这些驱动程序可使用的不同形式。这些形式与它们最为匹配的场景紧密相关。Java 程序员也将这些驱动程序的不同形式称为 驱动程序类型。我们还将按照特定于访问主机(Host)数据库的 DB2 Java 驱动程序和类型,为每个可访问性场景提出一些最佳实践。在结束讨论前,我们将简要地看一看基本的 64 位 DB2 目标数据库实例,并提供一些最佳实践建议和性能提高技巧。
DB2 Java 驱动程序概述
Java 为数据库访问提供了两个主要的 API:JDBC 和 SQLJ。
JDBC
Java 2, Standard Edition(J2SE)规范中将 JDBC 定义为 Java 编程语言的强制性组件。JDBC 是一个与供应商无关的动态 SQL 接口,该接口通过标准化的 Java 方法向应用程序提供数据访问。这些方法和接口被包装成 DB2 JDBC 驱动程序,并且分为了 基于 CLI 的传统驱动程序和新的 通用 JDBC 驱动程序。
Legacy/CLI JDBC 驱动程序
Legacy/CLI JDBC 驱动程序在文件 db2java.zip 中提供。其实现包名称为 com.ibm.db2.jdbc.app.DB2Driver 或 COM.ibm.db2.jdbc.net.DB2Driver。该驱动程序目前已被用于进行 J2EE 认证。其别名“app 驱动程序”(Type 2)源自于一种观念及其包名称,这种观念就是:该驱动程序将通过远程数据库的本地 DB2 UDB 客户机执行本地连接。而 Type 3 驱动程序又被称作网络驱动程序。
通用的 JDBC 驱动程序
通用的 JDBC 驱动程序在文件 db2jclearcase/" target="_blank" >cc.jar 中提供(Type 2 的实现则需要一个本机库)。其实现包名称为 com.ibm.db2.jcc.DB2Driver。该驱动程序是 DB2 UDB for Linux,UNIX and Windows V8.1 中的新功能。
在最初的实现(V8.1)中,该驱动程序用于使用 Type 4 驱动程序体系结构与 DB2 服务器进行直接的 Java 连接。在 DB2 V8.1.2 中,您可以在 Type 2 体系结构中使用该驱动程序。在 Type 2 体系结构中使用此驱动程序的一个主要原因是为了本地应用程序性能和分布式事务支持。通用 JDBC Type 2 驱动程序分别使用 com.ibm.db2.jcc.DB2XADataSource 和 com.ibm.db2.jcc.DB2ConnectionPoolDataSource 来支持分布式事务和连接池。
SQLJ
SQLJ 是一个用于从 Java 应用程序进行数据访问的标准开发模型。SQLJ API 是在 SQL 1999 规范中定义的。SQLJ 提供了独特的使用静态 SQL 语句进行开发以及在 DB2 包级别控制访问的能力。新的通用 JDBC 驱动程序在一个实现中同时为 JDBC 和 SQLJ API 提供了支持。JDBC 和 SQLJ 可以在同一个应用程序中互操作。
图 1展示了一些从 Java 编程的角度通过这两个驱动程序来访问 DB2 数据的可能方法。
图 1. DB2 驱动程序用法
打包信息
DB2 UDB 应用程序开发客户机包含用以连接到 UNIX、Linux、Windows、z/OS 或 OS/400 上的 DB2 UDB 数据库的驱动程序代码。如果您打算访问 DB2 UDB for z/OS 或 DB2 UDB for OS/400,就请在您的开发环境中使用 DB2 Connect 产品。DB2 UDB Application Development client 包含开发 C、COBOL 和 Java 应用程序所需的所有驱动程序。如果您打算开发一个多层应用程序,而该应用程序使用诸如 WebSphere Application Server 的 J2EE 应用程序服务器,那么每个应用程序服务器都将需要 DB2 UDB Runtime Client 或 DB2 UDB Application Development Client。
DB2 Connect
DB2 Connect 使用户可直接将主机数据用于个人计算机和基于 LAN 的工作站。除了可连接 z/OS 和 iSeries DB2 数据库,DB2 Connect 还提供了各种其他的中间层功能,例如:
关于这些驱动程序和可访问性的更多详细信息,请参阅本文的有关内容。
典型的主机可访问性场景
Type 1 驱动程序
JDBC Type 1 驱动程序是基于 JDBC-ODBC 桥的。因此,可以将 ODBC 驱动程序与该 JDBC 驱动程序结合使用。IBM 未提供 Type 1 驱动程序,而它也并非推荐环境。
Type 2 驱动程序
JDBC Type 2 驱动程序依靠特定于 OS 的库(共享库)与 RDBMS 进行通信。应用程序加载 JDBC 驱动程序之后,该驱动程序用共享库与 DB2 服务器进行通信。传统的驱动程序和通用驱动程序都提供 Type 2 实现。传统的驱动程序实现可在 DB2 v8.1 中获得,而通用驱动程序实现在 DB2 v8.1.2 以及更高的版本中提供。
可用性
该场景最适合于其中应用程序服务器可获得 DB2 Connect 网关的应用程序。如果在本地可获得网关,那么使用该场景就会有性能优势,因为加载本机 DB2 库时只存在极小的开销和网络延迟。然而,并非使 DB2 Connect 位于应用程序服务器本地就影响可用性,因为如果节点失败,那么这两层都存在系统运行中断的内在危险。
应用程序端的设置:
JDBC 驱动程序类路径:
通用驱动程序:
DB2 Connect 设置:
DB2 Connect 的设置通过 DB2 catalog 命令建立。
应修改主机、服务器(通常为 447)、dcs 数据库等以符合您的设置。
注意:在继续下去之前应先配置用于 TCP/IP 协议的设置。下列命令将确认 TCP/IP 设置:
图 2用图形详述了该场景。这些应用程序在本地调用 DB2 库,并且由 DB2 catalog 提供对主机数据库的访问。
图 2. 使用 Type 2 驱动程序的应用程序
带有 XA 支持的 Type 2 驱动程序
带有 XA(扩展体系结构)的 JDBC Type 2 驱动程序支持遵循 Java Transaction API(JTA),它充当了事务管理器与分布式事务系统中所涉及的各部分(资源管理器、应用程序服务器以及事务应用程序)之间的标准接口。传统的驱动程序和通用驱动程序都具有 Type 2 实现,该实现支持 JTA 并且只在 DB2 v8.1.2 中可用。
可用性
该场景最适合于包含涉及多个目标数据库的两阶段提交的事务,以及其中应用程序服务器可获得 DB2 Connect 网关的的应用程序。该场景中包含一些特定的细节,用以设置事务管理器来启用 XA 支持。
应用程序端的设置:
JDBC 驱动程序类路径:
DB2 Connect 设置:
JDBC 驱动程序类路径:
除了这些配置设置,涉及主机和 iSeries 数据库服务器的许多多地点更新场景还需要配置 Sync Point Manager(SPM)组件。在创建 DB2 实例时,会用默认设置自动地配置 DB2 SPM。DB2 Connect SPM 组件充当了 XA 协议(用于应用程序和 DB2 Connect 服务器之间)和本机 DRDA 两阶段提交协议(用于 DB2 Connect 服务器和 DB2 z/OS 之间)之间的转换程序。SPM 会维护它自己的事务日志,而在进行不同的 XA 事务管理器活动(通常是指再同步)时,就会用到这些日志。从 XA 事务管理器的角度来看,DB2 Connect SPM 充当了 DB2 z/OS 的代理。
另外,还应该考虑 DB2 Connect 事务处理监控程序名(tp_mon_name)的配置参数。tp_mon_name 数据库管理器配置参数将识别正使用的 TP 监控程序产品名(例如 CICS 或 ENCINA)。以下是设置这些参数所需要的命令:
图 3. 使用带有 XA 支持的 Type 2 驱动程序的应用程序
Type 3 驱动程序
JDBC Type 3 驱动程序是一种纯 Java 实现,它必须与 DB2 JDBC Applet 服务器通信才能访问 DB2 数据。JDBC Type 3 驱动程序通常被称作“网络驱动程序”,它是根据其包名 COM.ibm.db2.jdbc.net 命名的。DB2 Version 8.1 支持网络驱动程序,所以您可以将其用于 JDBC 应用程序。
共2页: 1 [2] 下一页