至少提供一点资料吗。
有没有后台出错的log文件,贴出来。
大家一起瞧瞧可能会有眉目。最好有问题部分的源码也贴出来,告诉我是第几行。

解决方案 »

  1.   

    程序运行完全正常,没有报错,就是用了一段时间后服务器没有响应了,再过30秒左右恢复响应,此时tomcat提示SocketsException。程序我举个例子
    <%@ page contentType="text/html; charset=GBK" %>
    <%@ page language="java" import="java.sql.*"  %>
    <%@ page import="java.util.*" %>
    //数据库连接bean
    <jsp:useBean id="dbcon" class="lybbs.dbcon" scope="page" />
    <%
    ResuleSet rs=dbcon.executeQuery("select * from table_aaaa where ...... ");
    while(rs.next()){
      out.print("sadfa").....
    }
    //使用完该结果集后,再使用相同的bean得到其他的结果集ResuleSet rs=dbcon.executeQuery("select * from table_bbbb where ...... ");
    if(rs.next()){
    ...}
    //依此类推,使用完毕后
    rs.close();
    conn.close();
    %>
      

  2.   

    >就是用了一段时间后服务器没有响应了,再过30秒左右恢复响应根据这一点,好像是强制自动垃圾回收时的现象。我曾经遇到过几次。
    在1G内存的机器上JVM进行强制自动垃圾回收大概要90秒的时间。
    这一段时间里JVM就想死掉了一样。会不会你的检索结果太大了呀?
      

  3.   

    不会,数据表总共1000多条记录,并且是执行同样的查询,有时就假死了
    我估计是数据库连接和结果集在页面执行过后仍没有释放,积累到一定程度,就"死"了,可是我加入rs.close()和conn.close()后仍然会假死.
      

  4.   

    你写的程序的
    rs.close();
    conn.close();
    没有在finally里,可能会有问题。
    请参考下面的写法。
            Connection conn = DBTools.connectDB();//你自己的取得Connection的方法。
            try{
                ResultSet rs = XXXBean.search(conn, searchCondition);//你的检索方法。
            }catch(Exception e){
    throw e;
    }finally{
    try {
    conn.close();
    conn = null;
    }catch(SQLException e){
    }
    }
    ★★★★★注意点★★★★★
    (1)同一个ResuleSet和Connection对象不要同时出现在jsp和bean中,
    否则中途发生Exception时很有可能ResuleSet和Connection资源得不到释放。
    本人建议写在bean里,检索结果集应该赋值到相应的对象传送
    (简单的如List型对象),而不使用ResuleSet。(2)Connectoin对象在conn.close()后最好用conn = null,告诉JVM这个
    Connectoin对象没有引用指向,可以随时回收。