本文使用全局配置
具体步骤如下:
- 配置context.xml,把连接池做为JNDI资源进行管理
- 添加数据库驱动文件
- 配置web.xml
- 编写代码获取数据源
1、配置context.xml
context.xml:位于tomcat的conf目录下
<!-- 把连接池作为JNDI资源 -->
<context>
<Resource name="jdbc/mysql" auth="Container" type="javax.sql.DataSource" maxActive="100" maxIdle="30"
maxWait="10000" username="root" password="123456" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/dbname?useUnicode=true&characterEncoding=utf-8"/>
</context>
说明:
属性 | 说明 |
---|---|
name | 指定该Resource的JNDI名称 |
auth | 指定管理Resource的Manager |
type | 指定Resource所使用的java类 |
maxActive | 指定连接池中允许处于活动状态的数据库连接数的上限 |
maxIdle | 指定连接池中允许处于空闲状态的数据库连接数的上限 |
maxWait | 指定连接池中的连接处于空闲的最长时间 |
username | 指定数据库的用户名 |
password | 指定数据库的用户密码 |
driverClassName | 指定数据库的驱动类的名称 |
url | 指定连接到数据库的url |
2、添加数据库驱动文件
mysql-connector-java-5.1.18-bin.jar
3、配置web.xml
web.xml:位于所写项目的WEB-INF目录中
<resource-ref>
<!-- 指定JNDI的名字,与context.xml中Resource元素的name属性值一致 -->
<res-ref-name>jdbc/mysql</res-ref-name>
<!-- 指定引用资源的类,与context.xml中Resource元素的type属性值一致 -->
<res-type>javax.sql.DataSource</res-type>
<!-- 指定管理所引用资源的Manager,与context.xml中Resource元素的auth属性值一致 -->
<res-auth>Container</res-auth>
</resource-ref>
4、编写代码获取数据源
public Connection getCollection(){
Connection connection = null;
try{
Context context = new InitialContext();
DataSource ds = (DataSource)context.lookup("java:comp:/env/jdbc/mysql");
connection = ds.getConnection();
}catch(SQLException e){
e.printStackTrace();
}catch(NamingException e){
e.printStackTrace();
}
return connection;
}
导入的包信息如下:
import java.sql.Connection;
import javax.naming.NamingException;
import java.sql.SQLException;
import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
注1:JNDI地址有两种写法(更提倡方式一)
(1) java:comp:/env/jdbc/mysql
(2) jdbc/mysql
jdbc/mysql为JNDI的名字,与context.xml中Resource元素的name属性值一致
注2:使用JNDI来配置连接池的好处:
避免反复创建和销毁连接,减少系统开销和拖延