阿克卡期货公司+;Spring MVC延迟结果+;tomcat 7.&x2B;

阿克卡期货公司+;Spring MVC延迟结果+;tomcat 7.&x2B;,spring,scala,tomcat,spring-mvc,Spring,Scala,Tomcat,Spring Mvc,SpringAPI3.+之后引入了对aync请求处理的支持,所以我想用Akka提供的我最喜欢的并发模型将其应用到示例Web应用程序中 我的代码看起来像这样 @RequestMapping(value = Array("/"), method = Array(RequestMethod.GET)) @ResponseBody def adminHome(request: HttpServletRequest) : DeferredResult

SpringAPI3.+之后引入了对aync请求处理的支持,所以我想用Akka提供的我最喜欢的并发模型将其应用到示例Web应用程序中

我的代码看起来像这样

      @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 DispatchersServlet的aync支持,以及附加到特定Servlet的url映射的所有过滤器

但我总是得到一个空页作为结果

我可以这样帮助你缩小问题的范围-

a。模型/视图中没有异常

如果我使用hello world将视图设置为一个简单的JSP,它也不会加载

b。请求映射工作正常

c。未来完成时没有错误

d。差分结果设置正确

我已经将一个延迟的ResultProcessingInterceptorAdapter实现绑定到mvc:延迟结果拦截器,并为beforeConcurrentHandling、preProcess、postProcess和afterCompletion放置日志 我从拦截器那里得到了以下日志

在并发处理请求之前:差异结果过期或设置为:false

预处理:差异结果已过期或设置为:false

后期处理:差异结果过期或设置为:真

完成后:差异结果过期或设置为:真

任何帮助都会得到高度的感谢,因为我已经为此绞尽脑汁整整两天了

更多细节

Spring版本3.2.3-RELEASE
Tomcat版本7.0.42

我认为您不应该将
@ResponseBody
ModelAndView
结合使用
@ResponseBook
如果您只是返回一些数据,则会使用它,例如
延迟结果[List[String]]

为了更好地理解,进行了较小的编辑。您好,我犯了一个小错误,我删除了@ResponseBook部分,但结果仍然相同。