tomcat下通过JNDI配置数据库连接池

本文详细介绍了如何在Tomcat下通过JNDI配置全局和局部数据库连接池,包括DBCP连接池的步骤,涉及context.xml、server.xml和web.xml的配置,并提到了测试连接池的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tomcat下通过JNDI配置数据库连接池按照访问范围分类共有两种,分别是全局数据库连接池和局部数据库连接池。前者是在一个tocmat部署下的应用都能使用该数据库连接池,后者是只有特定的应用才能使用的数据库连接池。tomcat默认的JDBC连接池实现是 apache下的DBCP连接池,我们也可以使用C3P0作为tomcat的数据库连接池,但是需要进行额外的配置,本篇博客只介绍DBCP连接池的两种配置方式。

在进行配置前需要将数据库驱动拷贝到 apache-tomcat-7.0.72\lib 目录中。如果使用C3P0,需要将C3P0相关的jar拷贝到这个目录中。

tomcat下的全局数据库连接池

第一步:在context.xml文件添加Resource节点

在apache-tomcat-7.0.72\conf\context.xml文件中添加Resource节点,内容如下:
<!--
        maxIdle 连接池中最多可空闲maxIdle个连接 
        minIdle 连接池中最少空闲maxIdle个连接 
        initialSize 初始化连接数目 
        maxWait 连接池中连接用完时,新的请求等待时间,毫秒 
        username 数据库用户名
        password 数据库密码
-->
<Resource name="jndi/testConnDB"   
            auth="Container"   
            type="javax.sql.DataSource"   
            driverClassName="com.mysql.jdbc.Driver"   
            url="jdbc:mysql://localhost:3306/jiemian_db"   
            username="root"   
            password="123456"   
            maxActive="20"   
            maxIdle="10"   
            maxWait="10000"/>  
/>

第二步:在项目中的web.xml添加resource-ref节点

  <resource-ref>
  	  <description>JNDI DataSource</description>  
	  <res-ref-name>jndi/testConnDB</res-ref-name>  
	  <res-type>javax.sql.DataSource</res-type>
	  <res-auth>Container</res-auth>  
  </resource-ref>

注意:res-ref-name元素的内容要第一步的resource元素name属性值一致。


tocmat下的局部数据库连接池方式一

第一步:在 server.xml文件中添加resource节点

在apache-tomcat-7.0.72\conf\server.xml文件找到项目对应的Context元素下添加如下内容:

      <Context docBase="jdbc_exam" path="/jdbc_exam" reloadable="true" source="org.eclipse.jst.jee.server:jdbc_exam">
		     <!--
		        maxIdle 连接池中最多可空闲maxIdle个连接 
		        minIdle 连接池中最少空闲maxIdle个连接 
		        initialSize 初始化连接数目 
		        maxWait 连接池中连接用完时,新的请求等待时间,毫秒 
		        username 数据库用户名
		        password 数据库密码
			-->
			<Resource name="jndi/testConnDB"   
			            auth="Container"   
			            type="javax.sql.DataSource"   
			            driverClassName="com.mysql.jdbc.Driver"   
			            url="jdbc:mysql://localhost:3306/jiemian_db"   
			            username="root"   
			            password="123456"   
			            maxActive="20"   
			            maxIdle="10"   
			            maxWait="10000"/>  
      </Context>


第二步: 在项目中的web.xml添加resource-ref节点

同上一节第二步

tocmat下的局部数据库连接池方式二(推荐)

第一步:在项目中新建context.xml文件,并添加Resource节点

在项目中的META-INF目录新建context.xml文件,添加如下内容:

<?xml version="1.0" encoding="UTF-8"?>
<Context>
	<!--
        maxIdle 连接池中最多可空闲maxIdle个连接 
        minIdle 连接池中最少空闲maxIdle个连接 
        initialSize 初始化连接数目 
        maxWait 连接池中连接用完时,新的请求等待时间,毫秒 
        username 数据库用户名
        password 数据库密码
	-->
	<Resource name="jndi/testConnDB"   
	            auth="Container"   
	            type="javax.sql.DataSource"   
	            driverClassName="com.mysql.jdbc.Driver"   
	            url="jdbc:mysql://localhost:3306/jiemian_db"   
	            username="root"   
	            password="123456"   
	            maxActive="20"   
	            maxIdle="10"   
	            maxWait="10000"/> 
</Context>

第二步: 在项目中的web.xml添加resource-ref节点

同上一节第二步。

测试数据库连接池

<%@ page language="java" contentType="text/html; charset=GBK"
    pageEncoding="GBK"%>
<%@page import="javax.naming.*"%>
<%@page import="javax.sql.*"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK">
<title>Insert title here</title>
</head>
<body>
<%
	Context ctx = new InitialContext();
	DataSource ds = (DataSource)ctx.lookup("java:comp/env/jndi/testConnDB");
	
%>
<b>连接数据库是否成功,通过DataSource方法。[<%=ds.getConnection()!=null %>]</b>
</body>
</html>

参考文章:

http://www.cr173.com/html/19802_1.html

http://blog.youkuaiyun.com/lgm277531070/article/details/6711177


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值