阿克卡期货公司+;Spring MVC延迟结果+;tomcat 7.&x2B;
SpringAPI3.+之后引入了对aync请求处理的支持,所以我想用Akka提供的我最喜欢的并发模型将其应用到示例Web应用程序中 我的代码看起来像这样阿克卡期货公司+;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
@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部分,但结果仍然相同。