Clustered Report Generation with OpenReports and Quartz
In addition to real-time report generation, OpenReports provides flexible report scheduling capabilities.

OpenReports uses Quartz, an open source job scheduling system, to schedule and execute reports. Quartz’s built in clustering capabilities give OpenReports the ability to scale up to meet resource intensive reporting requirements.
The number of scheduled reports that can be executed concurrently is controlled by the number of threads allocated to Quartz. This can be changed by modifying the following line in the quartz.properties file:
org.quartz.threadPool.threadCount = 3
Another option to increase the number of reports that can be executed concurrently is to add a clustered instance of the Quartz scheduler. In most cases, this can be done by following these steps:
- Set the org.quartz.jobStore.isClustered property to true in the quartz.properties file.
- Rebuild and Redeploy your war file.
- Deploy another instance of OpenReports. The easiest way to do this is to deploy the same OpenReports war file to an application server on another machine.
Here are a couple of things to keep in mind:
- All instances must use the same Quartz database. (HSQL does not seem to be supported by Quartz clustering).
- If the clustered instances are running on separate machines, the clocks must be in sync.
It is a good idea to encourage the use of scheduled reports and OpenReports Professional features such as ‘Send to Email‘, and the upcoming ‘Send to File‘ when generating large reports. This preserves resources needed for real-time report generation and gives you the ability to dynamically increase or decrease the resources allocated for scheduled report generation.
For more information on Quartz clustering, visit:
http://wiki.opensymphony.com/display/QRTZ1/ConfigJDBCJobStoreClustering
Add comment January 9th, 2007