The progress bar example on the richfaces demo site is only a very simple graphical demonstration of the component. In a real life application there will often be an asynchronous method behind it. The thread Asynchronous Tasks and Richfaces Progress Bar shows a more realistic way to use the component. Works great, until you activate the Quartz Dispatcher.
Just by adding the quartz module to application.xml and
<async:quartz-dispatcher/>
to components.xml, the progress bar will stop working.
The way the asynchronous process was initiated, was by passing the bean itself as a parameter to the call.
@Name("asyncExample")
@Scope(ScopeType.CONVERSATION)
public class AsyncExample {
...
@Asynchronous
public String startProcess(AsyncExample asyncExample) throws InterruptedException { ... }
...
}
I have the impression that the standard dispatcher will keep the reference to the original bean, while quartz will make a copy of it. The progress bar on the page gets it's value from the original bean, so in the quartz case, it will never get updated. Is this a bug or is there another way to use the progress bar with quartz?