我們有這段代碼可以從XML輸入生成PDF報告。這是非常緩慢的(2小時處理280K行; 10分鐘70K行,在Solaris T5220上)。JasperReports:fillReport非常慢
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
FileInputStream fileStream = new FileInputStream(rawXmlFile);
ds = docBuilder.parse(fileStream);
Map<String, Object> params = new HashMap<String, Object>();
params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, ds);
params.put(JRXPathQueryExecuterFactory.XML_DATE_PATTERN, com.vodafone.gdsp.reporting.enums.xml.DateFormat.DATE_FORMAT_ISO8601);
params.put(JRXPathQueryExecuterFactory.XML_NUMBER_PATTERN, "##0.##");
params.put(JRXPathQueryExecuterFactory.XML_LOCALE, Locale.ENGLISH);
params.put(JRParameter.REPORT_LOCALE, Locale.UK);
params.put("REPORT_DIR", jasperFile.substring(0, jasperFile.lastIndexOf("/")));
try {
virtPageSize = Integer.parseInt(reportConfig.getJasperVirtPageSize());
virtPageDir = reportConfig.getJasperVirtPageDir();
} catch (NullPointerException npe) {
logger.info("Virtual page size and directory not assigned, using the default value of virtPageSize {} and virtPageDir {}", virtPageSize, virtPageDir);
} catch (Exception ex) {
logger.error("Exception while fetching virtual page size and directory {}", ex.getMessage());
}
logger.info("Using Jasper virtual parameters ({}, {})", virtPageSize, virtPageDir);
JRFileVirtualizer virtualizer = new JRFileVirtualizer(virtPageSize, virtPageDir);
JRVirtualizationHelper.setThreadVirtualizer(virtualizer);
params.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);
DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance();
JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory",
"net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");
File jasperReport = new File(jasperFile);
JasperPrint jasperPrint = JasperFillManager.fillReport(new FileInputStream(jasperReport), params);
這並不包括你可以看到「使用Jaxen的」屬性 - 但沒有與Jaxen的表現觀察到的差異,並沒有Jaxen的。因此,我們使用的「使用Jaxen」配置不正確,或者我們有不同的問題。
有沒有人遇到過這個並解決了它? 有沒有人對如何確定問題有任何建議? - 我已經開始記錄日誌,但日誌記錄不是非常詳細,除非涉及到在逐行級別記錄日誌 - 沒有說「我已經看到'使用Jaxen'指令並將使用Jaxen」或任何沿着這些線。
非常感謝!
更新:當我在我的筆記本電腦(Windows 7系統)上運行此應用程序時,280K報告在16分鐘內運行;當我在筆記本電腦上運行與Xalan相同的報告而不是Jaxen時,我在08:00開始使用它,現在是15:00,並且尚未完成;因此Jaxen圖書館是我需要的。
我不明白爲什麼在Solaris 10上運行T5220時完全沒有區別。我將深入研究RAM等 - 可能存在資源約束。如果有人遇到這種情況,我仍然會很感激任何建議。
同樣的問題在這裏。你在哪裏sql jdbc數據源.... – tom