我正在JSF 2.0中开发一个应用程序,我想要一个多行文本框,它显示正在从文件实时读取(逐行)输出数据。通过多线程AJAX实时交换数据
因此,我们的目标是让一个页面上有一个按钮,触发后端开始从文件中读取数据,然后在文本框中读取结果时显示结果。
我曾想过通过以下方式这样做:
拥有当地页跟踪哪些行已检索/到目前为止,在文本框中显示。
定期地,本地页面将使用AJAX轮询后端并请求任何已读取的新数据(告诉它到目前为止该页面有哪些行,并且从那时起只检索新行)。
这将持续到整个文件被完全检索。
问题是,从文件中读取的bean方法正在运行一个while循环,它会阻塞。因此,要从它正在写入的数据结构中读取数据,将需要使用其他线程,更正吗?我听说在Web应用程序中产生新的线程是一个潜在的危险举措,应该使用线程池等。
任何人都可以对此有所了解吗?
更新:我尝试了几个不同的东西,没有运气。但我确实设法通过产生一个单独的Thread
来运行我的阻塞循环,而主线程可以在处理AJAX请求时使用它来读取它。有没有一个好的库可以用来做类似的事情,这仍然给JSF一些生命周期控制这个Thread
?
您是否针对具有EJB支持的Java EE 5或6容器? – BalusC 2011-06-17 20:26:02
我在没有EJB支持的Tomcat服务器上部署这个...我希望我可以访问@Asynchronous注释,但是我没有 – idolize 2011-06-17 21:48:31