背景:我的WEB项目建立在IBM WebSphere上,用JDBC连接池连接ORACLE数据库。
现象:servlet访问数据库,SQL语句如果加order by,当返回条数>=10条的时候,服务器就进入死机状态。如果去掉order by或者加order by数据少于10条,页面返回正常。奇怪的是这个现象并不普遍,有的也可以正常运行。
初步解决:查询oracle的session状态,发现在进行查询后JDBC THIN CLIENT用户为inactive的状态;同时在WebSphere后台打印出查出值,发现都正确返回,就是没有正常的页面显示。
代码:
ResultSet rs = null;
DBSql dbsql = new DBSql();
dbsql.Connect();
try {
//业务列表
List batFileList = new ArrayList();
dbsql.SQL =
"SELECT AA,BB,to_char(CC,'yyyy-mm-dd') AS CC,DD FROM QQ WHERE GOOD=1 "
+ paging.getOrderby(order)
+ " "
+ paging.getDesc(predesc); dbsql.Para = new String[0];
rs = dbsql.Result();
batlogger.debug(dbsql.SQL);
while (rs.next()) {
BatForm batForm = new BatForm();
batForm.setAPRID(rs.getString("AA"));
batForm.setBFILENAME(rs.getString("BB"));
batForm.setBUPLOADTIME(rs.getString("CC"));
batForm.setAPRSTATUS(GeneralData.getAPRStatusName(rs.getString("AA")));
batFileList.add(batForm);
batlogger.debug("batForm.getAPRID():"+batForm.getAPRID());
}
int len=batFileList.size(); //记录数个数
batlogger.debug("len:"+len);
request.setAttribute("batFileList", batFileList);
现象:servlet访问数据库,SQL语句如果加order by,当返回条数>=10条的时候,服务器就进入死机状态。如果去掉order by或者加order by数据少于10条,页面返回正常。奇怪的是这个现象并不普遍,有的也可以正常运行。
初步解决:查询oracle的session状态,发现在进行查询后JDBC THIN CLIENT用户为inactive的状态;同时在WebSphere后台打印出查出值,发现都正确返回,就是没有正常的页面显示。
代码:
ResultSet rs = null;
DBSql dbsql = new DBSql();
dbsql.Connect();
try {
//业务列表
List batFileList = new ArrayList();
dbsql.SQL =
"SELECT AA,BB,to_char(CC,'yyyy-mm-dd') AS CC,DD FROM QQ WHERE GOOD=1 "
+ paging.getOrderby(order)
+ " "
+ paging.getDesc(predesc); dbsql.Para = new String[0];
rs = dbsql.Result();
batlogger.debug(dbsql.SQL);
while (rs.next()) {
BatForm batForm = new BatForm();
batForm.setAPRID(rs.getString("AA"));
batForm.setBFILENAME(rs.getString("BB"));
batForm.setBUPLOADTIME(rs.getString("CC"));
batForm.setAPRSTATUS(GeneralData.getAPRStatusName(rs.getString("AA")));
batFileList.add(batForm);
batlogger.debug("batForm.getAPRID():"+batForm.getAPRID());
}
int len=batFileList.size(); //记录数个数
batlogger.debug("len:"+len);
request.setAttribute("batFileList", batFileList);
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货