Existe algum framework para processamento assíncrono de relatórios? A situação é a seguinte: o usuário precisa processar alguns relatórios a partir de uma aplicação web, sendo que o processamento desses relatórios pode levar alguns minutos. Na maioria dos casos o usuário não consegue visualizar o relatório porque ocorre um timeout da conexão entre o navegador e o servidor web. Para resolver essa questão, estou pensando em implementar uma fila de processamento para os relatórios e uma interface na qual o usuário possa consultar os relatórios processados e os que estão em processamento. Porém, gostaria de saber se existe algo pronto nesse sentido. Conheço as possíveis tecnologias para resolver essa questão (JMS puro ou Spring Batch). A questão é mais no sentido de como isso fica visível para o usuário.
O servlet 3.0 tem um contexto assíncrono, talvez possa lhe ajudar, dá uma lida sobre
Eu implementei geração assíncrona de relatório num dos projetos da empresa usando o próprio EJB assíncrono. Atendeu as mesmas expectativas que mencionasse e mais algumas!
Opções de chamadas Assíncronas:
JSE Executor Services - http://docs.oracle.com/javase/tutorial/essential/concurrency/exinter.html (não se usa mais threads manuais)
Spring Asinc - http://static.springsource.org/spring/docs/3.0.x/reference/scheduling.html
EJB Asynchronous Method Invocation - http://docs.oracle.com/javaee/6/tutorial/doc/gkkqg.html
EJB Message-Driven Bean - http://docs.oracle.com/javaee/6/tutorial/doc/gipko.html