Jump to content
We've recently updated our Privacy Statement, available here ×

JasperReports too slow


lucianocasa

Recommended Posts

Hi

I'm having trouble with the speed of the report.
My datasource is an XML using XPATH.
IReport, the report is shown in less than 7 seconds and the java program it takes 8 minutes.

This delay occurs in Fill.

can anyone help?

How do I get JRXmlDataSource.class? This would make any difference?

Tks

Luciano

Code:
    public void fill() throws JRException, IOException    {               HashMap<String, Object> params = new HashMap<String, Object>();                       System.out.println("Início Fill: " + now());               ResourceBundle myresources = ResourceBundle.getBundle("report");        Document docXML = JRXmlUtils.parse(new File(sXMLDataSource));               params.put(JRXPathQueryExecuterFactory.PARAMETER_XML_DATA_DOCUMENT, docXML);        params.put(JRXPathQueryExecuterFactory.XML_DATE_PATTERN, "yyyy-MM-dd");        params.put(JRXPathQueryExecuterFactory.XML_NUMBER_PATTERN, "#,##0.##");        params.put(JRXPathQueryExecuterFactory.XML_LOCALE, Locale.ENGLISH);                      params.put("REPORT_QUADRICULADO", sImprimeQuadriculado );        params.put("REPORT_FOLHAROSTO", sImprimeFolhaRosto );        params.put(JRParameter.REPORT_RESOURCE_BUNDLE, myresources  );        //params.put(JRParameter.REPORT_LOCALE, Locale.US);        System.out.println("Rodar2 Fill: " + now());        //JasperFillManager.fillReportToFile(sFileJasper, sFilePrint, params);        oFilePrint = JasperFillManager.fillReport(sFileJasper, params);                  System.out.println("Fim Fill: " + now());    }
Link to comment
Share on other sites

  • Replies 7
  • Created
  • Last Reply

Top Posters In This Topic

have you tried using JaxenXPathExecuterFactory?

I have seen somewhere (probably here in forums), this implementation is a lot faster than the default one.

override the property in jasperreports.properties file

net.sf.jasperreports.xpath.executer.factory=net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory

Link to comment
Share on other sites

  • 5 years later...

Hi,

Can you please post the code that you used in order to make it work? I've been trying to add the following

DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance();JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory",    "net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");[/code]

But nothing is changing (even if I put "bla bla bla" instead of "net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory")

here's the code I'm using

private JasperPrint getJasperPrintInstance(JasperReport report) throws JRException, NamingException, SQLException {    JasperPrint jasperPrint = null;    DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance();    JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory", "net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");    if (dataSource == null) {        jasperPrint = JasperFillManager.fillReport(report, this.reportParams, connection);    } else {        jasperPrint = JasperFillManager.fillReport(report, this.reportParams, new JRBeanCollectionDataSource(getDataSource()));    }    return jasperPrint;}[/code]

 

Link to comment
Share on other sites

  • 3 months later...

Solved it using jasperreports-6.3.1 and adding the following code (supposed to be deprecated according to a post I saw before):

JRProperties.setProperty("net.sf.jasperreports.xpath.executer.factory"            ,"net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory");[/code]

 

Link to comment
Share on other sites

  • 5 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...