背景:我的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);