Tomcat连接池配置与实现/JNDI

刚刚终于配置好了Tomcat6.0的连接池,唉,太不容易了,我太笨了,弄了几个小时。呵呵。
[color=blue]连接池的配置网上有很多种,我也测试了几种,第一种连接成功了[/color]
先在Tomcat\conf文件夹里面找到server.xml文件,在里面的这一段里面添加代码
<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>

添加如下代码
<Resource name="jdbc/exam"        
auth="Container" type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
maxIdle="30"
maxWait="5000"
username="root"
password="lzj"
url="jdbc:mysql://localhost/exam"
maxActive="100"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"/>

然后在找到同文件夹下面的context.xml文件,在<context></context>之间添加一行代码
。引用server.xml文件中刚刚加入的部分
<ResourceLink name="jdbc/exam" global="jdbc/exam" type="javax.sql.DataSource"/>

然后再在项目的web.xml文件中加入
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/exam</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>

配置就算是完成了,最主要的是连接池类的代码
下面我把连接池的代码也贴出来,已经测试成功

import java.sql.*;
import javax.sql.*;
import java.io.*;
import javax.naming.*;

public class ConnectionPool
{
private static ConnectionPool instace;
private static DataSource ds;
//获得数据源
public static DataSource createDataSource()
{
if (ds == null)
{
try
{
Context ct = new InitialContext();
if (ct == null)
System.out.println("无配置环境");
Context envContext = (Context) ct.lookup("java:/comp/env");
ds = (DataSource) envContext.lookup("jdbc/exam"); //根据名称取得数据源
}
catch (NamingException e)
{
e.printStackTrace();
}
}
return ds;
}

//从连接池中取得连接对象
public static synchronized Connection getConnection() throws SQLException,NamingException{
Connection con=null;
try
{
//获取连接
con=(Connection)createDataSource().getConnection();
}
catch (Exception e)
{
e.printStackTrace();
System.out.print("Get Connection Error");
}
return con;
}
//释放连接
public static synchronized void freeConnection(Connection con){
try
{
con.close();
}
catch (SQLException e)
{
e.printStackTrace();
System.out.println("Close Connection Error");
}
}
}

在使用的时候,这样使用就可以了
先导入要使用的包javax.naming.*;因为要抛出异常使用try,
try
{
con=cp.getConnection();
}
catch (NamingException e)
{
e.printStackTrace();
}
con.setAutoCommit(false);
//下面就开始写SQL语句,最后再用pstmt.executeUpdate();
con.commit();执行语句

这就是第一种方法,测试成功,只不过这种配置出来的是共享连接,哪个web app都可以连接。还有一种是直接在context.xml中添加配置,还没有测试成功,不知道是哪里出错了,
还有一种是直接用类,先创建一些连接,使用的时拿出来。这里我也不贴代码了,呵呵,人家讲的比我清楚,地址http://jalant.iteye.com/blog/378436
http://www.iteye.com/topic/245596
在我们的WEB项目中的META-INF文件夹下建立一个context.xml,把配置代码粘贴进去,接下来基本和上面的一样.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值