gpt4 book ai didi

spring - Akka Futures + Spring MVC 延迟结果 + tomcat 7.+

转载 作者:行者123 更新时间:2023-11-28 22:00:10 26 4
gpt4 key购买 nike

Spring-api 3.+ 之后引入了对aync请求处理的支持,所以我想把它放到sample webapplication中,用我最喜欢的Akka提供的并发模型

我的代码看起来像这样

      @RequestMapping(value = Array("/"), method = Array(RequestMethod.GET))
@ResponseBody
def adminHome(request: HttpServletRequest) : DeferredResult[ModelAndView] = {

import ExecutionContext.Implicits.global

val result = new DeferredResult[ModelAndView]

........ code for some future .........

// creating model map future from some future
val modelMapFuture: Future[Map[String, Any]] = someFuture.flatMap(urlObjects =>
Future(
Map("urlList" -> urlObjects.asJava)
))


// setting the deferred result value upon completion of future
modelMapFuture.onComplete {
case Success(modelMap) => result.setResult(new ModelAndView("index", modelMap.asJava))
case Failure(e) => result.setResult(new ModelAndView("index"))
}

result
}

我已经为 Spring mvc DispatcherServelet 和附加到特定 servelet 的 url 映射的所有过滤器启用了 aync 支持。

但结果总是我得到一个空白页面。

我可以通过说 - 来帮助您缩小问题范围

一个。模型/ View 中没有异常

如果我将 View 设置为带有 h​​ello world 的简单 JSP,它也不会加载。

请求映射工作完美

Future 顺利完成

延迟结果设置正确

我已将 DeferredResultProcessingInterceptorAdapter 实现绑定(bind)到 mvc:deferred-result-interceptors 并为 beforeConcurrentHandling、preProcess、postProcess 和 afterCompletion 放置日志我正在从拦截器获取以下日志

Before concurrent handling request : deffered result expired or set is : false

pre process : deffered result expired or set is : false

post process : deffered result expired or set is : true

after completion : deffered result expired or set is : true

如果我为此苦苦挣扎了整整两天,我们将不胜感激。

更多详情

Spring 版本 3.2.3-RELEASETomcat 版本 7.0.42

最佳答案

我认为您不应该将 @ResponseBodyModelAndView 结合使用。如果您只是返回一些数据,将使用 @ResponseBody——类似于 DeferredResult[List[String]]

关于spring - Akka Futures + Spring MVC 延迟结果 + tomcat 7.+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19006838/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com