I would like to have some suggestions on a design issue. I have a standard 3-tier architecture Java/J2EE application. The clint is a Swing application, which communicates with Business Object deployed on an App Server. BO talks with DAO for database operations. This application has a reporting module, which is designed and developed as follows right now : 1) Client submits request to BO for fetching data pertaining to a report, 2) BO in turn gets this data from DAO and return to the client, 3) client then processes this data into a report format and send it to the printer for printing.
Problems with this approach are : 1) client uses too much of memory to hold the raw data retrieved from server (around 750 MB for big reports), 2) client does quite some processing to generate report (sometimes more than 30 min).
Hence I was thinking of something like 1) client only submitting the request for report generation to BO, 2) BO fetches data from DAO, prcesses it and send it for printing, 3) once the request for printing is dispatched by BO, client getting some notification
Possible problems I could see are 1) if BO has to send the report to the printer, then the client printers need to be registered on the server, is that thing practically possible 2) increase of CPU load on server, since its doing the report procesing now, so Thin Vs Thick client
For the first problem, I could think of an alternative which is, e-mailing the report output in some electronic format (maybe PDF) to the client mailbox, once the report is generated, using JFreeReports.
Do you guys know of any standard design patterns for this kind of requirement?