- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我发现 JasperReports 在从 Java 应用程序填充报告时确实慢。程序卡在这一行:
print = JasperFillManager.fillReport(report, parameters, xmlDataSource);
它通常会在那里停留 3 分钟,消耗高达 300Mb 的 RAM 和 50% 的 CPU。
report
是一个使用 3 个子报告的编译 (.jasper) 报告。那么,我怎样才能提高报表填充性能呢?
最佳答案
看来是XPath引擎的问题。即,解析 XML 文件以查找数据的库。
iReport Designer 使用 Jaxen,而 JasperReport 使用 Xalan。与 Jaxen 相比,Xalan 真的很慢(真的很慢)。
这就是为什么只有在从 Java 应用程序而不是 iReports 填充报表时才会出现问题。
好吧,解决方案很简单,
只需在您的 Java 应用程序中添加以下行以选择 Jaxen 库而不是默认的 Xalan 库(它已被弃用,但它可以工作):
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-parse
关于java - JasperReports fillReport太慢且耗资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15875199/
我目前正在学习教程 ( http://kristantohans.wordpress.com/2010/03/01/new-to-jasperreport-build-your-first-impre
我在执行时遇到以下 PermGen space 错误 JasperFillManager.fillReport(reportFile.getPath(), parameters, conn);
当我在开发环境(SunOS 5.10 i86pc Solaris)中启动脚本时,出现以下异常,我尝试在谷歌上搜索几个小时,尝试建议的各种解决方法,但没有解决问题。事实上,当我启动脚本时尝试使用 sup
我们有这段代码可以从 XML 输入生成 PDF 报告。它非常慢(在 Solaris T5220 上处理 280K 行需要 2 小时;处理 70K 行需要 10 分钟)。 DocumentBuilder
我在我的应用程序(带有 JSP 的 Java 应用程序)中使用 Jasper 报告生成。我有一个带有表的 JSP 页面,并且我能够通过 jasper 报告成功生成包含该数据的 .xslx 文件。 我在
我正在研究 Spring MongoDB Jasper 集成示例。我有 Spring Mysql Jasper 示例,它运行良好。我正在寻找为 mongodb 转换的同一程序。 源代码位于:https
这个问题不太可能帮助任何 future 的访客;它只与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visit the
我是一名优秀的程序员,十分优秀!