tomcat5.0配置mysql数据库连接池关闭连接一事?
print 2004-03-31 05:16:16 本人配置了tomcat5.0与mysql的连接池,tomcat自带的连接池类。
<Context path="/dx" docBase="e:/jsp_php/dx" debug="0">
<Resource name="jdbc/MysqlDX" auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/MysqlDX">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/dx?useUnicode=true</value>
</parameter>
<parameter>
<name>username</name>
<value>***</value>
</parameter>
<parameter>
<name>password</name>
<value>***</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>20</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>10</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>-1</value>
</parameter>
</ResourceParams>
</Context>
以上配置可以正常访问,并在写一小系统,可刷新带查询数据库的页面超过十多次的话,页面会突然访问不了,页面进度一直在进行,可就是不会显示正常的页面。我访问不带查询数据库的页面正常。。。说明是访问数据库这出问题,,可我页面里都关闭了连接呀??这是为什么??
index.jsp
<%@ page contentType="text/html; charset=gb2312" %>
<%@ page language="java" import="java.sql.*,java.text.*,java.util.*,net.power.www.sort.*" %>
ResultSet rs = sort.Query("select * from dx");
rs.last();
out.print(rs.getRow());
sort.Close();
上面这页面刷新二三十次都不会出现问题。。。
出现问题的页面当然有很多代码,可我实例化了数据库连接类,在页面最后关闭了连接呀
以下是我写的访问连接池类。。。。
ackage net.power.www.sort;
import java.sql.*;
import javax.naming.*;
public class Sort_DB {
Context initCtx = null;
Context ctx = null;
Object obj = null;
javax.sql.DataSource ds = null;
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
static String jndName = "jdbc/MysqlDX";
public Sort_DB( ) {
System.out.println("Sort类已启动");
}
public boolean Update( String sql ) {
try {
initCtx = new InitialContext();
ctx = (Context) initCtx.lookup("java:comp/env");
obj = (Object) ctx.lookup(jndName);
ds = (javax.sql.DataSource)obj;
conn = ds.getConnection( );
stmt = conn.createStatement( );
stmt.executeUpdate( sql );
stmt.close( );
System.out.println("Update stmt close");
conn.close( );
System.out.println("Update conn close");
return true;
} catch ( Exception e ) {
System.err.println ( e.getMessage( ) );
return false;
}
}
public ResultSet Query( String sql ) {
try {
initCtx = new InitialContext();
ctx = (Context) initCtx.lookup("java:comp/env");
obj = (Object) ctx.lookup(jndName);
ds = (javax.sql.DataSource)obj;
conn = ds.getConnection( );
stmt = conn.createStatement( );
rs = stmt.executeQuery( sql );
} catch ( Exception e ) {
System.err.println ( e.getMessage( ) );
}
return rs;
}
public void Close(){
try{
if( stmt!=null ){
stmt.close();
System.out.print("Query stmt close");
}
if( conn!=null ){
conn.close();
System.out.println("Query conn close");
}
}catch( SQLException e) {
System.out.println( e.getMessage() );
}
}
}