OpenReports 3.0 uses the Spring Framework to configure and wire together its components. For most users there is no need to modify this configuration because the most important properties can be modified in the openreports.properties file, but there are some cases where it can be useful to modify the Spring configuration itself.
The Spring configuration file, applicationContext.xml, is located in the WebRoot/WEB-INF directory of the OpenReports distribution. You will need to rebuild the OpenReports war file after making any changes to this file.
1) Moving openreports.properties outside the war file
The applicationContext.xml file can be modified to look for the openreports.properties file outside of the war file. This can be helpful if you would like to use one war file in multiple environments. In order to do this, you must modify the PropertyPlaceholderConfigurer
<bean id=”environment”
class=”org.springframework.beans.factory.config.PropertyPlaceholderConfigurer” lazy-init=”false”> <property name=”ignoreResourceNotFound” value=”true” />
<property name=”locations”>
<list>
<value>classpath:openreports.properties</value>
</list>
</property>
</bean>
The important part is the location, classpath:openreports.properties. This tells Spring to look for openreports.properties in the classpath. To look for the openreports.properties on the file system, change classpath to file.
<bean id=”environment”
class=”org.springframework.beans.factory.config.PropertyPlaceholderConfigurer” lazy-init=”false”>
<property name=”ignoreResourceNotFound” value=”true” />
<property name=”locations”>
<list>
<value>file:///usr/share/openreports/openreports.properties</value>
</list>
</property>
</bean>
2) Mail Session configuration
By default, the mail session used to send scheduled reports is configured from the Settings page of the OpenReports Administration UI. If you need a more advanced mail session configuration, for authentication or other purposes, you can override this mail session with one configured through Spring. Add the following xml to the applicationContext.xml file to create a mail session that will look for the mail.user, mail.password, and mail.smtp.host properties in the openreports.properties file.
<bean id=”mailAuthenticator” class=”org.efs.openreports.util.SMTPAuthenticator”>
<constructor-arg index=”0″ value=”${mail.user}” />
<constructor-arg index=”1″ value=”${mail.password}” />
</bean>
<bean id=”mailSession” class=”javax.mail.Session” factory-method=”getInstance”>
<constructor-arg index=”0″>
<props>
<prop key=”mail.smtp.host”>${mail.smtp.host}</prop>
</props>
</constructor-arg>
<constructor-arg index=”1″ ref=”mailAuthenticator” />
</bean>
3) JNDI DataSources
The applicationContext.xml file can also be used to configure OpenReports to use JNDI DataSources. Just replace the hibernateDataSource and the quartDataSource beans with beans defined like the example below:
<bean id=”hibernateDataSource” class=”org.springframework.jndi.JndiObjectFactoryBean”>
<property name=”jndiName” value=”java:comp/env/jdbc/myHibernateDs”/>
</bean>
January 31st, 2008
New to OpenReports 3.0 is the ability to create OLAP reports. I’ve noticed a few users have been having trouble getting the example OLAP reports to run on Linux.
A common problem occurs with the Catalog Definition in datasources.xml. This must contain the full path to your Mondrian schema. In the example, the path is:
c:\openreports-tomcat\reports\SampleData.mondrian.xml
If you are running OpenReports on Linux, you must add file:// to the path to indicate the resource is a File, for example:
file:///usr/share/openreports-tomcat/reports/SampleData.mondrian.xml
January 30th, 2008
OpenReports 3.0.1 is now available for download. This is a bug fix release that fixes a number of problems including JDK 1.6 compatibility.
Click here to download or here to view the release notes.
The OpenReports Administration Guide is now freely available for download from SourceForge. Click here to download.
Also available are new Flash and functional demos of OpenReports Professional 3.0.1. The functional demo includes all the features of the full Professional version but is limited to 25 reports, 5 alerts, and 2 users. Click here to view or download the demos.
January 6th, 2008
OpenReports 3.0 is a major upgrade that includes a number of frequently requested features including support for JasperReports 2.0.2 and Eclipse BIRT 2.2 and OLAP support via Mondrian and JPivot.
In addition, OpenReports has migrated from WebWork 2 and Velocity to Struts 2, Spring, and JSP. This new architecture fixes a number of deployment issues and offers full support for internationalization of the user interface.
Other changes include an updated user interface that uses the Yahoo User Interface Library and features a new color scheme and date picker component.
OpenReports Professional 3.0 - OLAP Example

A new release of OpenReports Professional is also available. In addition to all the new features in the open source release, OpenReports Professional 3.0 includes the ability to import and export report definitions from the OpenReports Administration Console.
December 3rd, 2007
I have moved the OpenReports code on SourceForge from CVS to Subversion and committed a large number of enhancements and bug fixes that I’ve been working on since the OpenReports 2.2 release.Here is a list of the most important changes:
- Migrated From WebWork 2 to Struts 2 (and replaced the old WebWork IOC with Spring)
- Replaced all Dojo JavaScript with code from the Yahoo User Interface (YUI) library
- Added OLAP support via Mondrian and JPivot
- Added A Velocity ReportEngine for creating Text or HTML reports from Velocity templates
- Enhanced the workflow of the Admin screens with popup dialogs and new screen designs
- And lots of other small bug fixes and improvements
And here is a list of things to consider when upgrading from OpenReports 2.2
- JDK 1.5 (Java 5) is now required
- There is one new table: OR_TAGS
- The report upload directory must be specified in struts.properties
- QueryReport templates are not supported
- Do not upgrade your production server!
May 15th, 2007
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
January 9th, 2007
After reading a recent press release from JasperSoft about the 5th anniversary of JasperReports and the 4th anniversary of iReport, I decided to take a look back and see where OpenReports fits into the JasperReports time line. Here are the dates the projects were created on SourceForge.net:
JasperReports - September 2001
JasperEdit - April 2002
OpenReports - June 2002
iReport - October of 2002
JasperEdit was probably the first open source project built using JasperReports. It was a simple tool for editing, compiling, and running JasperReports XML definition files. JasperEdit evolved into OpenReports Designer, but was soon eclipsed in features and popularity by iReport and is no longer in development.
OpenReports 0.1, released in June of 2002, was a small web application for running JasperReports. It was developed using a very early version of the Echo framework and used XML files to define reports, parameters, and data sources.
OpenReport 0.1

OpenReports 0.5, released in October of 2003, was a major milestone release for OpenReports. It was built using WebWork and Hibernate, and replaced XML files with a web based administration console.
OpenReports 0.5

In the three years since the OpenReports 0.5 release, the competitive landscape has changed greatly but OpenReports is still going strong. Here’s a screenshot of the latest release:
OpenReports 2.1

In closing, I would like to thanks the JasperSoft team, especially Teodor and Giulio for their excellent work on JasperReports and iReport. If I had not discovered JasperReports five year ago, I would probably never have created OpenReports.
December 8th, 2006
The OpenReports Report Viewer is a functional demo application created to illustrate the use of the new report generation and scheduling API available in OpenReports 2.1.
To see a new flash demo of the Report Viewer, click the screenshot below.

The Report Viewer uses an AJAX user interface that was developed with the Yahoo! User Interface Library and Jack Slocum’s excellent YUI-EXT library. If you are looking for an AJAX library, be sure to check out YUI and YUI-EXT. I’ve found the combination to be an excellent alternative to Dojo library currently used in OpenReports.
December 5th, 2006
Now that OpenReports 2.1 includes support for Eclipse BIRT and improvements to existing support for JFreeReport and JXLS, I thought it would be a good time to post my thoughts on the open source reporting engines supported by OpenReports:
JasperReports
- Easiest to integrate and most flexible from a developers standpoint.
- Supports a large number of export formats.
- Report designer is not as easy to use as others.
Eclipse BIRT
- Excellent report designer and charting support.
- Great support for reports will multiple datasources.
- Harder to integrate with OpenReports then other engines.
JFreeReport
- Nice report designer.
- TableModel based API can restrictive.
- Does not seem very active from a community or development standpoint.
JXLS
- Excellent choice for Excel reports.
- Does not require a report designer.
- Supports multiple queries in one report.
- Only supports Excel output and not very well known.
At this point I would recommend OpenReports ChartReports for simple charts, OpenReports QueryReports for small table based reports, JasperReports or Eclipse BIRT for general reporting requirements, and JXLS for complex Excel reports.
I’m not sure about JFreeReport at this point. Even though it’s now owned by Pentaho, it does not seem very active. If I had to guess, I would bet a large number of Pentaho users are using other reporting engines such as Eclipse BIRT and JasperReports with Pentaho.
Anyone out there try more then one of these reporting engines recently? What are your thoughts?
November 6th, 2006
OpenReports provides the ability to add drill down capabilites to JasperReports and QueryReports through the use of the executeReport.action. The basic concept is to add a link to the report pointing to the executeReport.action and providing the parameters needed to run the report.
To add a drill-down link to a QueryReport, you must create a QueryReport Template and add an HREF column to your report. Take a look at CustomerListWithTemplate.vm for a detailed example of a QueryReport Template with multiple drill-down links.
In a JasperReport, it would be a hyperlinkReferenceExpression pointing to the executeReport.action URL. The OPENREPORTS_EXPORT_TYPE parameter can be added to the expression so that the appropriate export type is passed to the drill-down report. This technique works with JasperReports exported to PDF or HTML formats.
OpenReports Professional also provides to ability to create drill-downChartReports that give users the ability to drill down on a specific bar, segment, or slice in Bar, Ring, or Pie charts. Drill-down ChartReports can be defined entirely from the OpenReports Professional administration console without the need for a report template.
October 5th, 2006
Previous Posts