Sql server 2008 当建筑中发生错误时,birt上的数据库连接未关闭
我使用的是BIRT4.1 生成报表时出现问题时,与数据库的连接不会关闭 数据库中打开了太多连接,这会导致性能问题 这是我用来处理它的代码。但它不起作用:Sql server 2008 当建筑中发生错误时,birt上的数据库连接未关闭,sql-server-2008,tomcat,oracle10g,birt,Sql Server 2008,Tomcat,Oracle10g,Birt,我使用的是BIRT4.1 生成报表时出现问题时,与数据库的连接不会关闭 数据库中打开了太多连接,这会导致性能问题 这是我用来处理它的代码。但它不起作用: IRunAndRenderTask task; task.setRenderOption(renderOption); try { task.getAppContext().put("OdaJDBCDriverPassInConnectionCloseAfterUse", true); task.
IRunAndRenderTask task;
task.setRenderOption(renderOption);
try {
task.getAppContext().put("OdaJDBCDriverPassInConnectionCloseAfterUse", true);
task.setErrorHandlingOption(task.CANCEL_ON_ERROR);
task.run();
} catch (Exception ex) {
logger.error(ex.getMessage(), ex);
}
if (task.getErrors() != null && task.getErrors().size() > 0) {
logger.error(task.getErrors().toString());
//task.cancel();
task.close();
task=null;
throw new Exception("Somes errors append during birt report gerenation");
}
您是否考虑过将task.close代码移动到catch块中?异常是否在catch块中打印?也许您还应该尝试将调试语句添加到if task.getErrors条件中,以查看它是否正在执行。可能task.getErrors返回null,从而导致未调用close。我同意大卫的观点。您应该在try-catch块内的if语句之间有整个代码块。我将断点放入该块,并且正确执行close、cancel语句。在BIRT中,当生成过程中发生异常时,不会引发异常,但错误在task.geterrors中