I've done the same think like burasami. I develop a specific object which return the report as an InputStream. This object have have only one method get(String templateName). If I'm under iReport, this objects returns the template under a working folder, whereas in the server side, it returns the template persisted. With this maner, you obtain a standard report, and you just need to plug specific object