Era*_*dan 8 web-applications java-ee
这是问题所在
企业Web应用程序的用户正在执行导致长(非常长)数据库查询(或其他长处理密集型任务)的任务
问题:
我想出了几个解决方案,但我不确定哪个更好(在所有方面,性能,最佳实践,优雅和可维护性),我想知道你推荐的解决方案是什么,如果有的话我错过了一个解决方案?(可能是的,很多)
糟糕的解决方案:将请求线程用作工作线程,在会话中保存进度状态,让AJAX调用检查另一个并行请求中的状态(在会话中)
折衷解决方案:创建自己的线程池,处理监视线程,工作线程,并通过同步分布式事务缓存或持久存储中的状态来处理群集.这会释放请求,但创建应用程序服务器不知道的线程,并且不会在取消部署时关闭.它取决于你以干净的方式关闭线程,并且总有可能你最终会漏掉一些东西.这也不是J2EE的方法.
J2EE解决方案:将JMS用于异步任务,这就是它的用途
Spring解决方案:使用Spring批处理
你会在你的项目中做什么/做什么?你知道其他什么解决方案?您认为上面提到的哪一个是赢家?
rao*_*son 13
我会把你所谓的"坏解决方案"和"j2ee解决方案"结合起来:
诀窍是匹配请求/响应对.我会这样做:
NULL作为值放入消息的jmsCorrelationId以及映射中.也将该id传递给UI.NULL就让UI线程使用先前生成的id轮询AMS .这很干净,很好地从任何具体领域中抽象出来.纯粹的技术解决方案.
即使您不喜欢轮询,HTTP在设计上也是无状态的,我认为这种方式轮询只能在明确定义的时间间隔内进行.
无论如何,我实现了一个完全符合这种模式的系统,它运行得很好......
| 归档时间: |
|
| 查看次数: |
4903 次 |
| 最近记录: |