错误提示
10:53:34,046 ERROR [Engine] StandardWrapperValve[jsp]: Servlet.service() for ser
vlet jsp threw exception
com.microsoft.sqlserver.jdbc.SQLServerException: ResultSet 已关闭。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(U
nknown Source)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.checkClosed(Unknown S
ource)
at com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(Unknown Source)
at org.jboss.resource.adapter.jdbc.WrappedResultSet.next(WrappedResultSe
测试办法
rs = CCommonDAO.getReSult(sql,"ELOGISDBCON");
之后请先注释掉报表相关代码,使用下面的测试代码遍历一下结果集试试看
while(rs.next()){
System.out.println(rs.getObject(1));
}
现在还在测试中,表面提示好象是代码有问题,但在不同的服务器上得出的结果却不一样,真叫人深思
问题已查出.,因报表写法不合规则,所以造成CPU没有得到释放,在JBOSS3.2.5中允许不合规格的写法,但在JBOSS4.0中不允许这种写法.
原写法:
try{
rs = CCommonDAO.getReSult(sql,"ELOGISDBCON");
MREngine engine = new MREngine(pageContext,"/RepRoot/");
engine.addDataSet("usp_inbill_order",rs);
engine.bind("Report/ware_report/inbill_order");
rs.close();
}finally{
//rs.close();
}
规则写法:
try{
pCon =ConnectionManager.getConnection("ELOGISDBCON");
ps = pCon.prepareStatement(sql);
rs = ps.executeQuery();
MREngine engine = new MREngine(pageContext,"/RepRoot/");
engine.addDataSet("usp_copyinout_rpt",rs);
engine.bind("Report/ware_report/inout_rpt");
ps.close();
rs.close();
pCon.close();
}catch(Exception e){
ps.close();
rs.close();
pCon.close();
e.printStackTrace();
throw new Exception("查询失败");
}finally{
ps.close();
rs.close();
pCon.close();
}
错误提示2:
Reached the report count limit!是正常的提示,有两个可能的原因:
1、服务器上插的是设计器的加密锁。设计器加密锁可以做引擎的加密锁用,运行报表程序,但是有加载模板数量的限制。出错以后,重启Webserver可以再加载报表,或直接找明宇公司再买个显示加密狗。
2、服务器上部署的引擎文件mr.jar是试用版的文件,或者有试用版的jar文件在服务器上,删掉试用版的jar文件,换成正式版,清除webserver临时文件,重启webserver的就可以了。