读书人

一段代码.高人来帮忙看看有没有有关问

发布时间: 2012-04-06 12:22:24 作者: rapoo

一段代码.高人来帮忙看看有没有问题?
JSP+JAVABEAN连接数据库.每隔一段时间就打不开网页了.需要重启TOCMAT才行.请高人帮我看看,程序有没有问题?
数据源JAVABEAN:
第一个DBConnSource.java
/*
* 数据源连接BEAN
*/
package mybean;

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

public class DBConnSource {
private Connection conn;
private Statement stmt;
private PreparedStatement pstmt;
public DBConnSource(String dsName){
try{
Context initCtx = new InitialContext();
Context ctx =(Context)initCtx.lookup("java:comp/env");
DataSource ds =(DataSource)ctx.lookup(dsName);
conn = ds.getConnection();
}
catch(Exception e)
{
System.out.print(e.toString());
}
}
public synchronized Statement getStmt()throws Exception
{
stmt=conn.createStatement();
return stmt;
}
public synchronized PreparedStatement getPstmt(String sql)throws Exception
{
pstmt=conn.prepareStatement(sql);
return pstmt;
}
public void DBclose(){
try{
conn.close(); :重点是这里.这个conn.close 到底有没有被执行到.
}catch(Exception e){
System.out.print(e.toString());
}
}
}

第二个TitleList.java
/*
* 显示帖子列表只显示前10条.
* 使用数据源连接.
*
*/
package mybean;

import java.sql.*;

import mybean.DBConnSource;

public class TitleList {

private String tableName="";
private Statement stmt;

public TitleList(){}

public void setTableName(String n){
this.tableName=n;
}

public StringBuffer getBuffer(){
StringBuffer buffer=new StringBuffer();
try{
DBConnSource dbc=new DBConnSource("jdbc/myweb");
stmt=dbc.getStmt();
}catch(Exception e){
System.out.print("不能连接到数据源"+e.toString());
}

try{
String strSql="SELECT * FROM "+tableName+" ORDER BY id DESC LIMIT 10";
ResultSet rs = stmt.executeQuery(strSql);

rs.first();
do{
String title=rs.getString("title");
buffer.append("<a href='cont.jsp?nid="+rs.getInt("id")+"' target=_blank>"+title+"</a></BR>");
}while(rs.next());
rs.close();
stmt.close();
}
catch(SQLException e){
System.out.print("数据连接错误."+e.toString());
}
return buffer;
}
}

这两段代码.就是定义一个连接数据库的JAVABEAN,然后在每个需要使用动态数据的JAVABEAN里调用这个JAVABEAN.
象上述写法.那个conn.close(),有没有被执行到.
另外我的TOMCAT每隔一段时间就需要重启一下.还可能是什么原因?
谢谢
只有20分了.希望大家多多帮忙.

[解决办法]
你这样参考着做,我说个思路:

DBConnSource.java中,DBclose这个方法不要。

在StyleList.java中,来关闭这些资源。

finally{
if(rs != null){
rs.close();
}

if(stmt != null){
stmt.close();
}

if(dbc.getConn != null){
conn.close();
}
}

}

读书人网 >Java Web开发

热点推荐