JasperReports fillReport太慢且消耗资源
我发现从Java应用程序填充报告时,JasperReports确实很 。程序挂在此行:
print = JasperFillManager.fillReport(report, parameters, xmlDataSource);
它通常在那里停留 。
report
是使用3个子报表的已编译(.jasper)报告。- 数据源是一个很大的XML文件(大约10万行,1.5Mb)
- 该机器是具有4Gb RAM的3Ghz双核
那么,如何改善报表填充性能?
回答:
问题
看来问题出在XPath引擎上。即,解析XML文件以查找数据的库。
当iReport Designer使用 ,JasperReport使用
。与Jaxen相比,Xalan真的很慢(真的很慢)。
这就是为什么仅在从Java应用程序而不是从iReports填充报表时才会出现此问题的原因。
解决方案
好了,解决方案很简单, 只需在Java应用程序中添加以下行以选择Jaxen lib而不是默认的Xalan lib(已弃用,但可以使用):
JRProperties.setProperty("net.sf.jasperreports.xpath.executer.factory", "net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");
:不建议使用该行,我已经找到设置属性的正确方法:
DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance();JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory",
"net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");
您还需要将Jaxen
.jar添加到您的构建路径。这是链接:https :
//mvnrepository.com/artifact/jaxen/jaxen
Xalan用3到5分钟填充报告,而Jaxen现在只需几秒钟即可完成报告。
在这里找到了答案:http : //community.jaspersoft.com/questions/536842/jasperreports-too-
slow
而且在这里:http : //community.jaspersoft.com/wiki/xml-data-source-very-slow
-解析
以上是 JasperReports fillReport太慢且消耗资源 的全部内容, 来源链接: utcz.com/qa/429516.html