Everything works smooth, when I'm not using threads in application, while calling jasper API to generate reports. But as I saw, if I will use java thread pools, I could generate reports much faster. Only one problem. When I use thread pools, some reports are generated wrong - without parameters filled.
...ExecutorService executor = Executors.newFixedThreadPool(5);for(int i = 0; i < 1000; i++){ Runnable runnable = new Generator(parameters, "target/resources/Invoice.jasper", "Invoice", i); executor.execute(runnable);}...public class Generator implements Runnable {...@Overridepublic void run() { try { JasperPrint jp = JasperFillManager.fillReport(sourceFileName, params, new JREmptyDataSource()); JasperExportManager.exportReportToPdfFile(jp, "./target/resources/" + printFileName + "-" + counter + ".pdf");...[/code]
I know, that it can be related with subreprot filling, because these jasper API generating methods already working in multi-threading. Maybe anyone can comment on that? Is it possible to ganerate a lot of reports while using executor pool?
Some generated reports are not filled with parameters
in Products
Posted
Hello,
Everything works smooth, when I'm not using threads in application, while calling jasper API to generate reports. But as I saw, if I will use java thread pools, I could generate reports much faster. Only one problem. When I use thread pools, some reports are generated wrong - without parameters filled.
I know, that it can be related with subreprot filling, because these jasper API generating methods already working in multi-threading.
Maybe anyone can comment on that? Is it possible to ganerate a lot of reports while using executor pool?
Thanks,
TM