java 数据源DataSOurce_Tomcat数据源(DataSource)简介--Java学习网

核心提示:JDBC2.0提供了javax.sql.DataSource接口,它负责建立与数据库的连接,在应用程序中访问数据库时不必编写连接数据库的代码,可以直接从数据源获得数据库连接1.数据库和连接池  在Da...

JDBC2.0提供了javax.sql.DataSource接口,它负责建立与数据库的连接,在应用程序中访问数据库时不必编写连接数据库的代码,可以直接从数据源获得数据库连接

1.数据库和连接池

在DataSource中事先建立了多个数据库连接,这些数据库连接保存在连接池(ConnectPool)中。java程序访问数据库时,只需要从连接池中取出空闲状态的数据库连接,当程序访问数据库结束,再将数据库连接放回连接池,这样做可以调高访问数据库的效率。

如果Web应用每次接收到客户的请求,都和数控建立一个连接,数控操作结束就断开连接,这样会消费大量的时间和资源。因为数据库每次配置连接都要将Connection对象加载到内存中,再验证用户名和密码。

2.数据源和JNDI资源

由于DataSource对象是由Tomcat提供的,因此不能够在程序中创建一个DataSource对象,而要采用JNDI技术来获得DataSource对象的引用。

可以简单的把JNDI理解为一种将对象和名字绑定的技术,对象工厂负责生产出对象,这些对象都和唯一的名字绑定,外部程序可以通过名字来获得某个对象的引用。在javax.naming包中提供了Context接口,该接口提供了将对象和名字绑定,以及通过名字检索对象的方法。

Context接口方法

方 法

描 述

bind(String name,Object obj)

将对象与一个名字绑定

lookup(String name)

返回与指定的名字绑定的对象

Tomcat把DataSource作为一种可配置的JNDI资源来处理。生成DataSource对象的工厂org.apache.commons.dbcp.BasicDataSourceFactory。

3.配置数据源

数据源的配置涉及修改server.xml和web.xml文件

(1)在server.xml中加入元素

元素用来定义JNDI Resource。例如:

factory

org.apache.commons.dbcp.BasicDataSourceFactory

maxActive

100

maxIdle

30

maxWait

10000

username

dbuser

password

123456

driverClassName

com.mysql.jdbc.Driver

url

jdbc:mysql://localhost:3306/BookDB?autoReconnect=true

属性说明:

name:指定Resource的JNDI名字。

auth:指定管理Resource的Manager.它有两个值可选:Container和Application。Container表示由容器来创建和管理Resource,Application表示由Web应用来创建和管理Resource

type:指定Resource所属的JAVA类名。

在元素中指定了配置BookDB数据源的参数,元素的参数说明如下:

factory:指定生成DataResource的factory类名。

maxActive:指定数据库连接池中处于活动状态的数据库连接的最大数目,取值为0,表示不受限制。

maxIdle:指定数据库连接池中处于空闲状态的数据库连接的最大数目,取值为0,表示不受限制。

maxWait:指定数据库连接池中的数据库连接处于空闲状态的最长时间(单位:毫秒),超过这一时间,将超时异常。取值为-1,表示可以无限等待。

username:指定连接数据库用户名

password:指定连接数据库密码

driverClassName:指定连接数据库的JDBC驱动

url:指定连接数据库的URL。

(2)在web.xml中加入元素

如果web应用访问了由servlet容器管理的某个JNDI Resource,必须在web.xml文件中声明对这个JNDI Resource的引用。表示资源引用的元素为,以下是声明应用jdbc/BookDB数据源代码

DB Connection

jdbc/BookDB

javax.sql.DataSource

Container

resource-ref属性说明:

description:指定所引用的资源的说明

res-ref-name:指定所引用资源的JNDI名字,与元素中name属性对应

res_type:指定所引用资源的类名,与元素中的type属性对应

res-auth:指定管理所引用资源的Manager,与元素中的auth属性对应

4.程序中访问数据源

javax.naming.Context提供了查找JNDI Resource的接口,例如:可以通过以下代码获得jdbc/BookDB数据源的应用:

Context ctx = new InitialContext();

DataSource ds =(DataSource)ctx.lookup("java:comp/env/jdbc/BookDB");

得到DataSource对象的引用后,就可以通过DataSource的getConnection()方法获得数据库的连接对象:

Connection con = ds.getConnection();

当程序结束数据库访问后,应该调用Connection的close()方法,及时将Connection返回数据库连接池,使Connection恢复空闲状态。

关注微信号:javalearns   随时随地学Java

或扫一扫

随时随地学Java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值