You can only do this if you pass off the process of creating the PDF to a worker thread and use polling to interrogate the worker thread for status. And DON'T spawn the worker thread from the JSF request! Create the thread in advance at the application context level and make the JSF processor queue the request via a synchronized object. ...