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

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.csdn.net/lgm277531070/article/details/6711177


阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Tomcat配置JNDI,你可以按照以下步骤进行操作: 1. 打开Tomcat配置文件`tomcat/conf/server.xml`。 2. 在`<GlobalNamingResources>`元素中配置全局资源,例如数据库连接。例如,你可以添加一个`<Resource>`元素来定义一个连接: ```xml <GlobalNamingResources> <Resource name="jdbc/myDataSource" auth="Container" type="javax.sql.DataSource" maxTotal="100" maxIdle="30" maxWaitMillis="10000" username="your_username" password="your_password" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost:3306/your_database"/> </GlobalNamingResources> ``` 在上面的示例中,我们定义了一个名为`jdbc/myDataSource`的资源,它是一个`javax.sql.DataSource`类型的数据库连接。 3. 在`<Context>`元素中引用全局资源。在你的Web应用程序的上下文配置文件(通常是`META-INF/context.xml`)中,你可以使用`<ResourceLink>`元素引用全局资源。例如: ```xml <Context> <ResourceLink name="jdbc/myLocalDataSource" global="jdbc/myDataSource" type="javax.sql.DataSource"/> </Context> ``` 在上面的示例中,我们将全局资源`jdbc/myDataSource`映射到本地资源`jdbc/myLocalDataSource`。 4. 在你的应用程序中使用JNDI查找资源。你可以通过在代码中使用JNDI查找资源来获取连接实例。例如,在Java中可以这样做: ```java Context initContext = new InitialContext(); Context envContext = (Context) initContext.lookup("java:/comp/env"); DataSource dataSource = (DataSource) envContext.lookup("jdbc/myLocalDataSource"); Connection connection = dataSource.getConnection(); ``` 在上面的示例中,我们通过JNDI查找资源`jdbc/myLocalDataSource`来获取`javax.sql.DataSource`实例,并从中获取数据库连接。 请注意,这只是一个基本的示例,具体的配置和使用方法可能会因你的需求和环境而有所不同。你可以根据你的实际情况进行相应的调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperMan-zhang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值