刚刚终于配置好了Tomcat6.0的连接池,唉,太不容易了,我太笨了,弄了几个小时。呵呵。
连接池的配置网上有很多种,我也测试了几种,第一种连接成功了
先在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,把配置代码粘贴进去,接下来基本和上面的一样.