Tomcat配置数据库连接池
我们先来分析一下传统jdbc操作的步骤,如下图所示:
由图可以看出jdbc的操作有以下步骤:
(1)加载数据库驱动程序,数据库驱动程序通过classpath指定。
(2)通过DriverManager类获取数据库连接对象。
(3)通过Connection实例化preparedStatement对象,编写数据库操作指令由其完成。
(4)关闭数据库,释放资源。
由以上操作步骤可以知道:每一次我们执行数据库操作时,以上的步骤都要重新执行一遍。但实际上,以上步骤中只有步骤(3)是根据用户实际情况而定的,其余步骤每次执行均属重复。
所以,我们想要提升程序的性能,就必须把重复的步骤去掉,换句话说也就是只保留步骤(3)。这时(1)(2)(4)步骤就可以直接使用数据源操作代替,而程序性能将会得到大大的提升,这就是数据源产生的原因。
数据源操作的核心原理:
数据源操作的核心原理就是,在一个对象池中保存多个数据库的连接〔也称为数据库连接池)。这样以后再进行数据库操作时,直接从连接池中取出一个数据库连接。当数据库操作完成后,再将此连接放回到数据库连接池中,等待其他用户继续使用。一.Tomcat配置数据库连接池
(1)配置数据库驱动程序该数据库连接池是在tomcat上进行配置的,所以要先把ojdbc5/6.jar复制到tomcat的目录下。路径如下:
Tomcat安装文件夹\lib\ojdbc5/6.jar
(2)在server文件中配置数据库连接池(该文件位于tomcat主目录/conf.server.xml)。
在<Context>节点中添加一个<Resource>的节点:
<Context path = "/me" docBase = "D:\MyProject\Java\MyProject\WebRoot" reloadable = "true">
<Resource
name = "jdbc/me"
auth = "Container"
type = "javax.sql.DataSource"
maxActive = "100"
maxIdle = "30"
maxWait = "1000"
username = "【替换内容】数据库用户名"
password = "【替换内容】数据库密码"
driverClassName = "oracle.jdbc.driver.OracleDriver"
url = "jdbc:oracle:thin:@localhost:1521:orcl"/>
</Context>
(3)配置web.xml文件
<resource-ref>
<description>OracleDatabaseConnection</description>
<res-ref-name>jdbc/me</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
二.测试配置是否成功
数据源的操作使用的是JNDI方式进行查找的,所以要用数据源取得数据库连接必须按一下步骤进行:(1)初始化名称查找上下文:Context ctx = new InitialContext();
(2)通过名称查找DataSource对象:DataSource ds = (DataSource)ctx.lookup(JNDI名称);
(3)通过DataSource取得一个数据库连接:Connection conn = ds.getConnection()
以下是测试的jsp页面,连接成功则会在页面中显示相关信息:
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ page import="javax.naming.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>ConnectionTest</title>
</head>
<body>
<%
String DSNAME = "java:comp/env/jdbc/me";
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup(DSNAME);
Connection conn = ds.getConnection();
%>
<%=conn %>
<%conn.close(); %>
</body>
</html>
测试成功效果图: