我已经设置了一个Wicket + Hibernate + Spring Web应用程序,涉及收集一些数据(生成并返回一些文件),将其存储在数据库中,创建一些图像并在网页上显示所有这些内容。
这对于短时间运行都很好,但有时收集数据(包括一些远程计算)需要太长时间(20分钟以上)并超时。 我尝试使用两种方法解决此问题,但两种方法都存在一些问题。
第一种方法是使用 AjaxLazyLoadPanel,并在getLazyLoadComponent中完成所有操作。 这对于短时间运行很好,但对于20分钟以上的运行,由于超时,LazyLoadComponents无法加载。
第二种方法是创建一个中间Fragment,并添加一个持续时间为10秒的AjaxSelfUpdatingTimerBehavior,以轮询进行数字处理中创建的文件。这似乎使任务在后台运行没有问题,但当返回的数据需要存储在数据库中时会失败。我正在使用Open Session in View模式,但也许在20分钟后尝试存储数据时会失败吗??(解决方案可能在于解决这个问题..)。
由于以上问题,我现在正在阅读备选方法来处理这些长时间运行的任务,并遇到了以下内容:
这对于短时间运行都很好,但有时收集数据(包括一些远程计算)需要太长时间(20分钟以上)并超时。 我尝试使用两种方法解决此问题,但两种方法都存在一些问题。
第一种方法是使用 AjaxLazyLoadPanel,并在getLazyLoadComponent中完成所有操作。 这对于短时间运行很好,但对于20分钟以上的运行,由于超时,LazyLoadComponents无法加载。
第二种方法是创建一个中间Fragment,并添加一个持续时间为10秒的AjaxSelfUpdatingTimerBehavior,以轮询进行数字处理中创建的文件。这似乎使任务在后台运行没有问题,但当返回的数据需要存储在数据库中时会失败。我正在使用Open Session in View模式,但也许在20分钟后尝试存储数据时会失败吗??(解决方案可能在于解决这个问题..)。
由于以上问题,我现在正在阅读备选方法来处理这些长时间运行的任务,并遇到了以下内容:
我现在想知道这两种方法是否更适合解决我在运行任务和将数据存储到数据库中遇到的超时问题,或者是否有其他解决方案可以帮助我解决这个问题。
在我再次实施可能最终不起作用的东西之前,我真的很想知道新方法是否可行。
最好的问候,
Tim