Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringHibernate中实现长时间运行的进程?_Java_Spring_Hibernate - Fatal编程技术网

Java 如何在SpringHibernate中实现长时间运行的进程?

Java 如何在SpringHibernate中实现长时间运行的进程?,java,spring,hibernate,Java,Spring,Hibernate,正如我们所知,struts拦截器execute and wait将处理长时间运行的进程,它不会让请求超时并破坏它发送的wait和最后所需的响应,我希望在spring和hibernate中为长时间运行的进程实现相同的功能。为了在请求的整个生命周期内保持会话打开,我们把它和风景联系起来。这可以通过使用Spring的或 视图中的open session筛选器将确保Hibernate会话在渲染视图之前一直保持打开状态 或 您可以将后端中的任务队列用于长时间运行的进程,如 工作队列(又称:任务队列)是为了

正如我们所知,struts拦截器execute and wait将处理长时间运行的进程,它不会让请求超时并破坏它发送的wait和最后所需的响应,我希望在spring和hibernate中为长时间运行的进程实现相同的功能。

为了在请求的整个生命周期内保持会话打开,我们把它和风景联系起来。这可以通过使用Spring的或

视图中的open session筛选器将确保Hibernate会话在渲染视图之前一直保持打开状态

您可以将后端中的任务队列用于长时间运行的进程,如

工作队列(又称:任务队列)是为了避免立即执行资源密集型任务,并且必须等待任务完成。相反,任务被安排在以后完成。任务被封装为消息并发送到队列。后台运行的辅助进程将弹出任务并最终执行作业。当您运行多个Worker时,任务将在他们之间共享


这个概念在web应用程序中特别有用,因为在短的HTTP请求窗口中无法处理复杂的任务。

我建议您使用Spring的DeferredResult。这是一个未来的实现,使用http长极化技术

假设您将发出一个请求,服务器将返回延迟的结果,然后您的请求将保持打开状态,直到内部进程(Hibernate)完成其任务。可在构造函数中配置超时


这里的另一个例子

Struts简化了web应用程序的开发。您在这里寻找的是如何启动异步任务,这与struts完全无关。我建议你去看看。