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

回到顶部