Keep the ReportClientDocument object in session

Put the ReportClientDocument object in session instead of the ReportSource object. You can only view the report if you keep the ReportSource object in session; however when the ReportClientDocument object is in session you can use controllers to modify your report options, set parameters, and specify your data sources.
If you want to cache any Report Application Server controllers or cursors, you must put the ReportClientdocument in session, otherwise the report document will close itself once the reference count drops to zero.