在 Liberty 中配置关系数据库连接
可配置与不同 JDBC 提供程序相关联的数据源以进行数据库连接。JDBC 提供程序提供与特定供应商数据库进行 JDBC 连接所需的驱动程序实现类。
关于此任务
要从应用程序访问数据库,必须使用数据源。数据源由 JDBC 驱动程序提供,具有下列种类:
- javax.sql.DataSource
这种数据源是基础形式。它并不提供互操作性来增强连接池,而且不能作为具备两阶段功能的资源来参与涉及多个资源的事务。
- javax.sql.ConnectionPoolDataSource
这种数据源已对连接池启用。它不能作为具备两阶段功能的资源来参与涉及多个资源的事务。
- javax.sql.XADataSource
这种数据源已对连接池启用,而且能够作为具备两阶段功能的资源参与涉及多个资源的事务。
JDBC 驱动程序必须至少提供其中一种数据源,才能在 Liberty 中使用。对于常用的 JDBC 驱动程序,Liberty 已经知道各种数据源类型的实现类名。仅需要告知 Liberty 在何处查找 JDBC 驱动程序。
过程
- 在 server.xml 文件中,定义指向 JDBC 驱动程序 JAR 文件位置或压缩文件位置的共享库。 例如:
<library id="DB2JCC4Lib"> <fileset dir="C:/DB2/java" includes="db2jcc4.jar db2jcc_license_cisuz.jar"/> </library>
- 使用 JDBC 驱动程序定义数据源。如果您未指定这种数据源,那么 Liberty 会根据可用项按以下顺序选择数据源。
- javax.sql.ConnectionPoolDataSource
- javax.sql.DataSource
- javax.sql.XADataSource
以下是接受缺省数据源类型的示例:<dataSource id="db2" jndiName="jdbc/db2"> <jdbcDriver libraryRef="DB2JCC4Lib"/> <properties.db2.jcc databaseName="SAMPLEDB" serverName="localhost" portNumber="50000"/> </dataSource>
以下是使用 javax.sql.XADataSource 类型的示例:<dataSource id="db2xa" jndiName="jdbc/db2xa" type="javax.sql.XADataSource"> <jdbcDriver libraryRef="DB2JCC4Lib"/> <properties.db2.jcc databaseName="SAMPLEDB" serverName="localhost" portNumber="50000"/> </dataSource>
如果启用了至少一个 Java EE 7 功能部件,那么缺省数据源可用。如果未指定类型,那么此数据源使用另一优先级确定类型。- javax.sql.XADataSource
- javax.sql.ConnectionPoolDataSource
- javax.sql.DataSource
此数据源以 java:comp/DefaultDataSource 形式提供。不必为其指定 jndiName。要配置缺省数据源,请指定数据源并将其标识设置为 DefaultDataSource。以下是配置缺省数据源以指向 DB2 数据库的示例:<dataSource id="DefaultDataSource"> <jdbcDriver libraryRef="DB2JCC4Lib"/> <properties.db2.jcc databaseName="SAMPLEDB" serverName="localhost" portNumber="50000"/> </dataSource>
- 可选: 配置数据源的属性,例如 JDBC 供应商属性和连接池属性。 例如:有关 dataSource 元素、connectionManager 元素及一些常用 JDBC 供应商的配置属性的完整列表,请参阅数据源 (dataSource)。
<dataSource id="DefaultDataSource" jndiName="jdbc/db2" connectionSharing="MatchCurrentState" isolationLevel="TRANSACTION_READ_COMMITTED" statementCacheSize="20"> <connectionManager maxPoolSize="20" minPoolSize="5" connectionTimeout="10s" agedTimeout="30m"/> <jdbcDriver libraryRef="DB2JCC4Lib"/> <properties.db2.jcc databaseName="SAMPLEDB" serverName="localhost" portNumber="50000" currentLockTimeout="30s" user="user1" password="pwd1"/> </dataSource>
- 可选: 根据以下示例来配置常用数据库的数据源。
- 对于 DB2®
<dataSource id="DefaultDataSource" jndiName="jdbc/db2"> <jdbcDriver libraryRef="DB2JCC4Lib"/> <properties.db2.jcc databaseName="SAMPLEDB" serverName="localhost" portNumber="50000"/> </dataSource> <library id="DB2JCC4Lib"> <fileset dir="C:/DB2/java" includes="db2jcc4.jar db2jcc_license_cisuz.jar"/> </library>
- 对于 DB2 on iSeries(本机)
<dataSource id="DefaultDataSource" jndiName="jdbc/db2iNative"> <jdbcDriver libraryRef="DB2iNativeLib"/> <properties.db2.i.native databaseName="*LOCAL"/> </dataSource> <library id="DB2iNativeLib"> <fileset dir="/QIBM/Proddata/java400/jdk6/lib/ext" includes="db2_classes16.jar"/> </library>
- 对于 DB2 on iSeries(工具箱)
<dataSource id="DefaultDataSource" jndiName="jdbc/db2iToolbox"> <jdbcDriver libraryRef="DB2iToolboxLib"/> <properties.db2.i.toolbox databaseName="SAMPLEDB" serverName="localhost"/> </dataSource> <library id="DB2iToolboxLib"> <fileset dir="/QIBM/ProdData/Http/Public/jt400/lib" includes="jt400.jar"/> </library>
- 对于 Derby Embedded
<dataSource id="DefaultDataSource" jndiName="jdbc/derbyEmbedded"> <jdbcDriver libraryRef="DerbyLib"/> <properties.derby.embedded databaseName="C:/databases/SAMPLEDB" createDatabase="create"/> </dataSource> <library id="DerbyLib"> <fileset dir="C:/db-derby-10.8.1.2-bin/lib"/> </library>
- 对于 Derby Network Client
<dataSource id="DefaultDataSource" jndiName="jdbc/derbyClient"> <jdbcDriver libraryRef="DerbyLib"/> <properties.derby.client databaseName="C:/databases/SAMPLEDB" createDatabase="create" serverName="localhost" portNumber="1527"/> </dataSource> <library id="DerbyLib"> <fileset dir="C:/db-derby-10.8.1.2-bin/lib"/> </library>
- 对于 Informix® JCC
<dataSource id="DefaultDataSource" jndiName="jdbc/informixjcc"> <jdbcDriver libraryRef="DB2JCC4Lib"/> <properties.informix.jcc databaseName="SAMPLEDB" serverName="localhost" portNumber="1526"/> </dataSource> <library id="DB2JCC4Lib"> <fileset dir="C:/Drivers/jcc/4.8" includes="db2jcc4.jar db2jcc_license_cisuz.jar"/> </library>
- 对于 Informix JDBC
<dataSource id="DefaultDataSource" jndiName="jdbc/informix"> <jdbcDriver libraryRef="InformixLib"/> <properties.informix databaseName="SAMPLEDB" ifxIFXHOST="localhost" serverName="ol_machinename" portNumber="1526"/> </dataSource> <library id="InformixLib"> <fileset dir="C:/Drivers/informix" includes="ifxjdbc.jar ifxjdbcx.jar"/> </library>
- 对于 Microsoft SQL Server(Microsoft JDBC 驱动程序)
<dataSource id="DefaultDataSource" jndiName="jdbc/mssqlserver"> <jdbcDriver libraryRef="MSJDBCLib"/> <properties.microsoft.sqlserver databaseName="SAMPLEDB" serverName="localhost" portNumber="1433"/> </dataSource> <library id="MSJDBCLib"> <file name="C:/sqljdbc_6.0/enu/sqljdbc41.jar"/> </library>
- 对于 Microsoft SQL Server(DataDirect Connect for JDBC 驱动程序)
<dataSource id="DefaultDataSource" jndiName="jdbc/ddsqlserver"> <jdbcDriver libraryRef="DataDirectLib"/> <properties.datadirect.sqlserver databaseName="SAMPLEDB" serverName="localhost" portNumber="1433"/> </dataSource> <library id="DataDirectLib"> <file name="C:/DataDirect/Connect-4.2/lib/sqlserver.jar"/> </library>
- 对于 MySQL
<dataSource id="DefaultDataSource" jndiName="jdbc/mySQL"> <jdbcDriver libraryRef="MySQLLib"/> <properties databaseName="SAMPLEDB" serverName="localhost" portNumber="3306"/> </dataSource> <library id="MySQLLib"> <file name="C:/mysql-connector-java-x.x.xx/mysql-connector-java-x.x.xx.jar"/> </library>
- 对于 Oracle
<dataSource id="DefaultDataSource" jndiName="jdbc/oracle"> <jdbcDriver libraryRef="OracleLib"/> <properties.oracle URL="jdbc:oracle:thin:@//localhost:1521/SAMPLEDB"/> </dataSource> <library id="OracleLib"> <file name="C:/Oracle/lib/ojdbc6.jar"/> </library>
- 对于 Oracle 调用接口 (OCI)
<dataSource id="DefaultDataSource" jndiName="jdbc/oracleOCI"> <jdbcDriver libraryRef="OracleOciLib"/> <properties.oracle URL="jdbc:oracle:oci:@//localhost:1521/SAMPLEDB"/> </dataSource> <library id="OracleOciLib"> <fileset dir="C:/Oracle/OCI/instantclient"/> </library>
在 Liberty server.env 文件中,通过操作系统的 PATH 环境变量来设置库路径,将 Liberty 环境配置为可识别 OCI 本机客户机库。另外,请在 Liberty jvm.options 文件中设置库路径。-Djava.library.path=C:\\Oracle\\OCI\\instantclient
有关使用 server.env 和 jvm.options 配置文件的更多信息,请参阅定制 Liberty 环境。
- 对于 Sybase
<dataSource id="DefaultDataSource" jndiName="jdbc/sybase"> <jdbcDriver libraryRef="SybaseLib"/> <properties.sybase databaseName="SAMPLEDB" serverName="localhost" portNumber="5000"/> </dataSource> <library id="SybaseLib"> <file name="C:/Drivers/sybase/jconn4.jar"/> </library>
- 对于 solidDB
<dataSource id="DefaultDataSource" jndiName="jdbc/solidDB"> <jdbcDriver libraryRef="solidLib"/> <properties databaseName="SAMPLEDB" URL="jdbc:solid://localhost:2315/"/> </dataSource> <library id="solidLib"> <file name="C:/Drivers/solidDB/SolidDriver2.0.jar"/> </library>
- 对于 Liberty 未知的 JDBC 驱动程序
在示例中,JDBC 驱动程序位于 C:/Drivers/SampleJDBC/sampleDriver.jar 中,并提供名称为 com.ibm.sample.SampleXADataSource 的 javax.sql.XADataSource 实现。JDBC 驱动程序还提供特定于供应商的数据源属性,例如 databaseName、hostName 和 port。<dataSource id="DefaultDataSource" jndiName="jdbc/sample" type="javax.sql.XADataSource"> <jdbcDriver libraryRef="SampleJDBCLib" javax.sql.XADataSource="com.ibm.sample.SampleXADataSource"/> <properties databaseName="SAMPLEDB" hostName="localhost" port="12345"/> </dataSource> <library id="SampleJDBCLib"> <file name="C:/Drivers/SampleJDBC/sampleDriver.jar"/> </library>
子主题
- 配置缺省数据源
可以为数据库连接配置与不同 JDBC 提供者相关联的缺省数据源。JDBC 提供程序提供与特定供应商数据库进行 JDBC 连接所需的驱动程序实现类。 - 应用程序定义的数据源
可以通过注释或借助部署描述符,在应用程序中定义数据源,如 Java™ EE 规范所定义。 - 为使用 DB2 数据库的应用程序配置客户机重新路由
可使用客户机重新路由功能部件来配置企业应用程序,以便 DB2 数据库从通信损失恢复,并且应用程序可在干扰降至最低的情况下继续工作。重新路由是持续运行支持的核心,但仅当具有已对应用程序服务器连接标识的备用位置时,重新路由才可行。 - 在 z/OS 上启用 DB2 JDBC 2 类驱动程序
通过在 z/OS® 上使用 JDBC 2 类驱动程序实现,可以使 Liberty 服务器能与 DB2 交互。 - 为数据库连接配置连接池
可以通过为数据源定义连接管理器来为数据源配置连接池。
相关任务:

文件名:twlp_dep_configuring_ds.html