jsp使用oracle时,使用过一段时间会导致服务器停止响应??? 至少提供一点资料吗。有没有后台出错的log文件,贴出来。大家一起瞧瞧可能会有眉目。最好有问题部分的源码也贴出来,告诉我是第几行。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 程序运行完全正常,没有报错,就是用了一段时间后服务器没有响应了,再过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();%> >就是用了一段时间后服务器没有响应了,再过30秒左右恢复响应根据这一点,好像是强制自动垃圾回收时的现象。我曾经遇到过几次。在1G内存的机器上JVM进行强制自动垃圾回收大概要90秒的时间。这一段时间里JVM就想死掉了一样。会不会你的检索结果太大了呀? 不会,数据表总共1000多条记录,并且是执行同样的查询,有时就假死了我估计是数据库连接和结果集在页面执行过后仍没有释放,积累到一定程度,就"死"了,可是我加入rs.close()和conn.close()后仍然会假死. 你写的程序的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对象没有引用指向,可以随时回收。 j2ee基础知识问题与答案,面试经常问到 大家帮我看看,怎么解决这个问题 一个语法问题 天际网急聘高级工程师 想实现压缩,解压缩字符串!在线等!谢谢! Ant编译提示看不懂 Unknown argument: -cp? How can find "java.util.ArrayList" in jsp? 工程所属的N个Java、Jsp文件,如何自动格式化对齐、缩进等 服务器端解析XML axis2-1.5 通讯设置代理服务器问题 javabean 的问题 求助,一个关于Tomcat 和 Apache的配置问题
<%@ 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();
%>
在1G内存的机器上JVM进行强制自动垃圾回收大概要90秒的时间。
这一段时间里JVM就想死掉了一样。会不会你的检索结果太大了呀?
我估计是数据库连接和结果集在页面执行过后仍没有释放,积累到一定程度,就"死"了,可是我加入rs.close()和conn.close()后仍然会假死.
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对象没有引用指向,可以随时回收。