JDBCòο.docx
《JDBCòο.docx》由会员分享,可在线阅读,更多相关《JDBCòο.docx(10页珍藏版)》请在冰豆网上搜索。
JDBCòο
JDBC配置参考文档
1、配置BEAWebLogic8.1JDBC连接
--Oracle8.1.7数据库使用的WebLogic8.1JDBC配置
本文描述了BEAWebLogic8.1Server中各种与JDBC相关功能的配置。
尽管我们使用了Oracle8.1.7作为我们的示例数据库管理系统(DBMS),但是只要其他关系数据库提供通过JDBC的连接,就可以很容易地把一般性的概念转移到这些数据库上。
JDBC是标准的JavaAPI,几乎所有需要访问数据库的J2EE应用程序都直接或间接地使用了它。
在BEAWebLogic8.1中,配置JDBC连接包括创建和配置两个主要的工件——JDBC连接池和数据源。
与这两个主要工件相关的是其他次要的可配置工件,比如多池或数据源工厂。
2、连接池还是多池?
在深入讨论如何创建和配置连接池之前,我们需要简要地看一看需要使用连接池的原因。
如果您没有使用JDBC连接池访问数据库,那么为了建立到数据库的连接,您将需要进行以下步骤:
∙加载JDBC驱动程序类。
∙创建JDBC驱动程序的一个实例,并把它注册到驱动程序管理器中。
∙通过提供一个数据库URL和其他所需的参数,从驱动程序管理器中获得一个到数据库的连接。
∙完成之后关闭连接。
与这种一次一个连接的方法相比,连接池是数据库连接的一个现存集合,而且可以在多个活动的J2EE应用程序中回收这些数据库连接。
连接池中的连接是开放的,可用于访问。
应用程序使用一个连接之后,这个连接没有被销毁,而是被返回到连接池中,随后可以为其他应用程序所用。
通过节省与频繁建立和断开数据库连接相关的计算资源,连接池提高了数据库访问的性能,尤其是在负载高峰期内。
多池是连接池的集合。
多池的主要目的是提高可用性和在一组连接池间实现负载均衡。
3、为什么使用数据源?
一个数据源就是一个提供对连接池或多池访问的Java命名和目录接口(JavaNamingandDirectoryInterface,JNDI)对象。
连接池或多池对于配置数据源是必需的。
可以使用事务属性来配置数据源。
非事务性的数据源用于本地事务;而事务性的数据源用于分布式事务。
数据源封装了对数据库的访问,隐藏了访问连接池或多池所涉及的细节。
另外,数据源使配置数据库连接的事务性特性变得容易。
JDBCDataSourceFactory是一个JNDI对象,企业应用程序使用它从应用程序范围内的连接池中获得连接。
4、JDBC驱动程序设置
在WebLogicServer和DBMS之间建立连接所需的JDBC驱动程序分为两种类型:
Type2和Type4。
Type2JDBC驱动程序需要本地库。
使用Type2JDBC驱动程序时,需要把到WebLogic共享库(或动态链接库)目录的路径\server\bin\oci817_8和到Oracle客户端库目录的路径\bin添加到系统变量的开头部分。
WebLogic8.1Server安装在目录中。
Oracle8.1.7数据库安装在目录中。
是WebLogicServerPath变量。
对于Type2和Type4驱动程序来说,在WebLogicServerCLASSPATH中,需要相关的JDBC驱动程序类来配置连接池或数据源。
把包含OracleType2JDBC驱动程序类的\JDBC\lib\classes12.zip文件添加给/startWebLogic脚本文件中的变量。
∙:
WebLogicServerClasspath变量。
∙:
WebLogicServerDomain目录。
5、配置JDBC连接池
现在,我们将考虑如何创建连接池和配置与其相关的各种参数。
要创建一个JDBC连接池,在AdministrationConsole中右击JDBC>ConnectionPools节点,然后选择ConfigureanewJDBCConnectionPool。
这将显示一个ConfigureaJDBCConnectionPool画面。
为Oracle数据库选择DatabaseType–Oracle。
选择一个DatabaseDriver,然后点击Continue按钮(参见图1)。
图1
随后显示DefineConnectionProperties画面。
在这个画面中,指定一个DatabaseName、一个DatabaseUserName和一个Password。
点击Continue按钮。
随后显示TestDataBaseConnection。
在这个画面中,指定DriverClassname、URL和Properties字段的值。
DriverClassname就是用于获得数据库连接的驱动程序类名。
URL是用于获得连接的数据库URL。
Properties是用于创建连接的属性列表。
表1中指定了用于不同OracleJDBC驱动程序的DriverClassname和URL设置。
表1驱动程序类名和URL设置
在URL设置中,是在/network/ADMIN/tnsnames.ora文件中指定的HOST值,是在tnsnames.ora文件中指定的PORT值,而是数据库实例名称。
在Properties文本框中的设置是:
user=
server=
是指定登录到Oracle数据库中的用户名。
是Oracle数据库实例名称。
如果使用了Oracle瘦(Type4)驱动程序,就不应该指定服务器属性。
点击TestDriverConfiguration按钮,以测试JDBCConnectionPool。
如果驱动程序配置测试成功,会显示一条“Connectionsuccessful”消息。
如果驱动程序配置有错误,则会显示一条错误消息。
随后会显示CreateandDeploy画面。
在这个画面中,选择一台服务器部署连接池,然后点击CreateandDeploy按钮来创建和部署一个JDBC连接池。
这将在被选中的服务器上创建和部署一个连接池。
也可以把它部署在多台服务器上。
AdministrationConsole中的JDBC>ConnectionPools节点将会增加一个节点。
是连接池的名称。
要修改JDBCConnectionPool配置,点击JDBC>ConnectionPools>节点,然后选择Configuration选项卡。
要修改目标服务器,选择TargetandDeploy选项卡。
选择一台目标服务器,然后点击Apply按钮。
选择Connections选项卡以配置JDBCConnections属性。
6、连接属性
∙InitialCapacity:
创建连接池时所创建的数据库连接的数目。
∙MaximumCapacity:
连接池中连接的最大数目。
∙CapacityIncrement:
连接池容量在最大容量限制范围内的增量。
∙LoginDelay:
在创建每个物理数据库连接之前要延迟的秒数。
∙AllowShrinking:
将该项设置为true时,如果没有使用额外的连接,则允许连接池把容量减小到InitialCapacity。
∙ShrinkFrequency:
在减小连接池容量之前要等待的秒数。
如果将ShrinkFrequency设置为true,那么也必须将AllowShrinking设置为true。
∙TestFrequency:
数据库连接测试之间间隔的秒数。
在每个RefreshPeriod时间间隔之后,如果设置了TestTableName,就会使用TestTableName测试未使用的数据库连接。
∙TestReservedConnections:
如果选择了这个选项,服务器会在把连接提供给客户端之前对其进行测试。
∙TestCreatedConnections:
如果选择了这个选项,就会在创建一个JDBC连接之后和在把它添加到JDBC连接池中的可用连接列表之前,对该JDBC连接进行测试。
∙TestReleasedConnections:
如果选择了这个选项,服务器就会在把连接返回给连接池之前对其进行测试。
∙TestTableName:
用于JDBC连接测试的数据库表名。
如果指定了TestFrequency,并且选择了TestReservedConnections、TestCreatedConnections或TestReleasedConnections,则TableName是必需的。
在配置Connections画面之后,选择Apply按钮。
7、配置JDBC多池
一个多池就是连接池的一个集合。
在创建多池之前为多池配置连接池。
要创建和配置一个新的多池,右击AdministrationConsole中的JDBC>MultiPools节点,然后选择ConfigureaNewMultiPool。
随后会显示Configuration画面。
在MultiPoolConfiguration画面中,指定AlgorithmType并选择Create按钮。
如果将AlgorithmType设置为“Highavailability”,那么在使用另一个池中的连接之前,一个池中的所有可用连接应已经用完。
如果将AlgorithmType设置为“Loadbalancing”,多池会将连接请求平均地分布给多池中的所有连接池(参见图2)。
图2
选择Pools选项卡,然后在Pools画面中选择要添加到多池中的连接池。
点击Apply按钮。
被选中的连接池将被添加到多池中。
连接中使用的连接池是基于AlgorithmType进行选择的。
选择TargetandDeploy选项卡,然后在TargetandDeploy画面中选择一台目标服务器。
点击Apply按钮。
可以把一个多池部署在多台服务器上。
AdministrationConsole中的JDBC>MultiPools节点将会增加一个节点。
是多池的名称。
8、配置JDBC数据源
数据源是用于访问连接池或多池的JNDI对象。
连接池或多池对于创建数据源是必需的。
连接池对于创建事务性的数据源是必需的。
应在创建数据源之前创建连接池或多池。
要创建和配置数据源,在AdministrationConsole中右击JDBC>DataSources节点,然后选择ConfigureanewJDBCTxDataSource。
随后会显示Configuration画面。
在DataSourceConfiguration画面中指定字段的设置。
JNDIName是数据源的JNDI路径。
选择HonorGlobalTransactions,以创建一个事务性的(Tx)数据源。
如果没有选中HonorGlobalTransactions,那么所创建的数据源就是非Tx数据源(参见图3)。
图3
随后会显示ConnecttoConnectionPool画面。
在PoolName字段中,从可用连接池的列表中选择一个JDBC连接池,然后点击Continue按钮。
数据源与被选中的连接池相连接。
随后会显示TargettheDataSource画面。
在这个画面中,选择一台目标服务器,然后点击Continue按钮。
这将在被选中的服务器上部署数据源,但是也可以在多台服务器上部署它。
AdministrationConsole中的JDBC>DataSources节点将增加一个节点。
是数据源的名称。
要修改数据源配置,点击管理控制台中的JDBC>DataSources>节点,选择Configuration选项卡。
为了可以在一次服务器访问中把每个ResultSet的多个行从服务器取到外部客户端,选择RowPrefetchEnabled并指定RowPrefetchSize。
要为非XA的JDBC驱动程序启用全局事务,为非XA的驱动程序选择EmulateTwo-PhaseCommit,并选择HonorGlobalTransactions。
要修改数据源的目标服务器,选择TargetandDeploy选项卡。
选择一台目标服务器,然后点击Apply按钮。
9、数据源和Tx数据源之比较
如果在数据源配置中选择了HonorGlobalTransactions,数据源就是Tx数据源。
数据源是和连接池或多池一起使用的。
Tx数据源和连接池一起使用。
数据源用于本地事务。
Tx数据源用于分布式事务。
在下列情况下,应该使用Tx数据源而不是数据源:
∙使用容器托管的持久性实体bean。
∙在事务期间访问多项资源。
∙在一个事务中进行多个数据库更新。
∙在多台服务器上使用同一个连接池。
10、配置JDBC数据源工厂
JDBC数据源工厂是一项JNDI数据源资源。
企业应用程序使用数据源工厂从应用程序范围内的连接池中获得连接。
要创建和配置一个JDBC数据源工厂,在AdministrationConsole中右击JDBC>DataSourceFactories节点,然后选择ConfigureanewJDBCDataSourceFactory。
随后会显示Configuration画面。
在这个画面中,指定URL、DriverClassName、FactoryName和Properties字段的值,然后点击Create按钮(参见图4)。
图4
AdministrationConsole中的JDBC>DataSourceFactories节点将增加一个节点。
是数据源工厂的名称。
要使用,需要重新启动服务器。
12、JDBC配置和服务器性能
下面列出了BEA针对WebLogicServer的各种JDBC配置设置给出的建议。
为了提高生产模式下服务器的性能:
∙在JDBC连接池配置中,把InitialCapacity的值设置为等于MaxCapacity。
如果InitialCapacity的值小于MaxCapacity,那么当负载增加时,服务器就会创建额外的数据库连接。
在负载增加的情况下,必须分配资源以创建额外的数据库连接,同时资源对于完成jdbc客户端请求也是必需的。
∙把MaxCapacity的值设置为等于需要JDBC连接的并发客户端会话的数量:
为了确定一个连接池中的并发客户端会话,选择该连接池节点。
选择Monitoring选项卡。
ActiveConnections栏中的值是并发客户端会话的平均数目。
ConnectionsHigh的值是并发客户端会话的最大数量。
在部署应用程序和监视活动连接之后,可以修改MaxCapacity的值。
∙当外部客户端通过WebLogicServer使用JDBC访问数据库时,在数据源配置中选择RowPrefetchEnabled:
通过在一次服务器访问中取多个行,行预取可以提高性能。
13、结束语
按照上面概述过程,WebLogic开发人员应该能够针对Oracle8.1数据库配置BEAWebLogic8.1Server了。
配置其他数据库类似于配置Oracle8.1。
把包含相应数据库的驱动程序类的zip/jar文件添加给CLASSPATH变量,然后在JDBC连接池配置中指定相应的连接URL和驱动程序类名。