一、在JDBC编程中,每操作一次数据库都出经过:Connection、创建Statement对象、获取ResultSet、销毁ResultSet、销毁Statement、断开Connection也就是说每一次操作数据库,都会创建连接、断开连接。在实际开发中为了避免频繁的创建、断开数据库的连接,提出了数据源(Data Source),也称为连接池(DBCP,Database Connection Pool),这样在操作数据库时,程序并不是直接创建Connection,而是向连接池“申请”一个Connection,如果连接池中有空闲的Connection,则返回该Connection,否则创建新的Connection,使用完毕以后,Servlet会释放该Connection,这时连接池会将该Connection回收,并交给其他线程使用,可以达到减少创建、断开连接的次数。
二、数据源一般实现自javax.sql.DataSource接口,Spring、Struts、Hibernate等框架都有自己的数据源实现。Tomcat中也内置 了数据源的支持。
三、Tomcat实现数据源的步骤:
1、找到tomcat/conf/context.xml文件加入如下配置:
<Context cookies="true">
<Resource name="jdbc/databaseWeb" author="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="username" password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/databaseWeb?characterEncoding=utf-8" />
</Context>
其中:databaseWeb指的是数据库名,username,password分别表示用户名、密码
2、在工程的web.xml文件中添加如下代码:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/databaseWeb<res-ref-name>
<res-type>javax.sql.DataSource<res-type>
<res-auth>Container<res-auth>
</resource-ref>
3、使用方法
//获取所有的资源
Contect initContext=new InitialContext();
Context envContext =(Context) initContext.lookup("java:/comp/env");
DataSource ds=(DataSource)envContext.lookup("jdbc/databaseWeb");
//获取JNDI数据源
Connection conn=ds.getConnection();