我设置了一个Wicket + Hibernate + Spring Web应用程序,它涉及收集一些数据(生成并返回一些文件),将其存储在数据库中,创建一些图像并在网页上显示所有这些.
这一切都适用于短期运行,但有时收集数据(涉及一些远程数字运算)需要太长时间(20多分钟)和超时.我尝试使用两种方法来解决这个问题,但它们都显示出一些问题.
第一种方法是使用AjaxLazyLoadPanel,只是在getLazyLoadComponent中执行所有操作.这在短期运行中运行良好,但是对于20多分钟的运行,由于超时,LazyLoadComponents不会加载(那里有好的矛盾).
第二种方法涉及使用添加的AjaxSelfUpdatingTimerBehavior创建一个中间片段,其 持续时间设置为10秒,轮询在数字运算中创建的文件.这似乎使任务在后台运行没有问题,但是当返回的数据需要存储在数据库中时失败.我在View模式中使用Open Session,但是在20分钟后尝试存储数据时可能会失败?(解决方案可能在于解决这个问题......).
由于上述问题,我现在正在阅读处理这些长期运行任务的替代方法,并遇到:
我现在想知道这些中的任何一个是否更适合解决我在运行任务和之后将数据存储在数据库中的超时问题,或者是否有任何其他解决方案可能对此有帮助情况.
我真的很想知道一种新的方法是否可行,然后我再花一天时间实现可能最终无法工作的东西.
最好的问候,
蒂姆