数据库连接池
JNDI(简单理解为是一种将对象和名字绑定的技术,应用程序可以通过名字获取对应的对象或服务):
提供了查找和访问各种命名和访问各种命名和目录服务的通用、统一的接口。
context.xml文件<Coutext>内写入:
<Environment name="myname" value="lzx" type="java.lang.String"/>
name:环境条目的名称,相对于java:comp/env的名称
type:环境条目的java类名的全称
value:通过JNDI context请求时,返回给应用的参数值,该值必须转换成type属性定义的java类型
数据库连接池以数据源的方式体现步骤:
1.配置context.xml文件。
<Resource name="指定Resource的JNDI的名字" auth="指定管理Resource的Manager" type="指定Resource所属的Java类型"
maxActive="100" maxIdle="10" maxWait="10000" username="数据库用户名"
password="数据库连接密码" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/NewsManagerSystem"
/>
auth:有两个值——Container(表示由容器创建Resource),Application(表示由Web应用创建和管理Resource)。
maxActive:指定数据库连接池中处于活动状态的数据库连接的最大数目
maxIdie:指定数据库连接池中中处于空闲状态的数据库连接的最大数目,取值为0,表示不受限制
maxWait:指定数据库连接池中数据库连接处于空闲状态的最长时间(以毫秒为单位),超出这一时间将会抛出异常
driverClassName:指定连接数据库的JDBC驱动程序
url:指定连接数据库的url
2.配置web.xml文件
<resource-ref>
<description>news DataSource</description>
<res-ref-name>jdbc/news</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
description:对所引用资源的说明
res-ref-name:指定所引用资源的JNDI名字与<Resource>元素的name值对应
res-type:指定所引用资源的类名字,与<Resource>元素中的type属性对应
res-auth:指定管理所引用资源的Manager,与<Resource>元素中的auth属性对应
3.添加驱动
往tomcat>lib添加驱动(直接复制过去)
4.编写代码,使用lookup()方法获得数据源对象
导包:<%@ page import="javax.naming.*" %> <%@page import="javax.sql.DataSource"%>
Connection con = null;
DataSource ds = (DataSource)ctx.lookup("java:comp/env/指定Resource的JNDI的名字");
con = ds.getConnection();
.......