Java EE - Web 服务器如何处理长时间运行的 http 请求

标签 java spring jakarta-ee httprequest

我目前正在开发一个 Web 应用程序,一旦 Controller 收到请求(请求当前是 AJAX 请求),该应用程序将触发长时间运行的数据库过程。

我的 Controller 看起来像这样

@RequestMapping(value="/startProcedureCall.htm", method=RequestMethod.GET)
protected void startProcedureCall(HttpServletRequest request) {
    //do some stuff
    //...
    //...
    myService.callProcedure(); //<- this procedure may run upto an hour
    //... do some stuff
    //...
}

请求将保留在 Controller 中,直到 myService.callProcedure() 完成其执行,正如代码注释中所述,可能会运行长达一个小时。

我担心的是,Web 服务器是否会允许请求在 Controller 中滞留这么长时间?这不会导致某种超时错误吗?

我目前正在使用 websphere 作为 Web 服务器。

最佳答案

这取决于您的网络服务器的配置方式。资源如this我们将向您展示如何为您的 WebSphere 版本配置超时设置。

请记住,您可能需要考虑不同的架构,例如异步批处理作业(例如 Spring Batch )和缓存。只是一个想法。

关于Java EE - Web 服务器如何处理长时间运行的 http 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19309926/

相关文章:

java - 传递给另一个线程的大型 JDBC 结果集不会释放 JVM 内存

java - ApplicationContext 和 WebApplicationContext 有什么区别?

java - 无法导入 Spark 包

java - 验证方法是否被调用 - 单元测试

java - 查找所有 spring @value 属性

java - 从 context.xml 加载 Bean 属性值

spring - 为什么 setDisallowedFields 为 id? -- Spring 宠物诊所示例

java - 不支持的 major.minor 版本 52.0 错误

jakarta-ee - 为什么在 Java EE 中注解优于部署描述符?

java - 返回数组索引并同时递增