与Spring MVC的@RequestBody一起使用时恢复Jetty 7延续的问题

时间:2011-12-13 17:08:16

标签: spring-mvc jetty jackson long-polling

我正在尝试在依赖Spring MVC @RequestBody + Jackson来反序列化json请求的控制器操作上使用Jetty延续。暂停请求可以很好地工作,但是当恢复连接时(回复请求),Jackson已经“使用”了请求读取器实例,因此反序列化请求主体失败。至少这是我迄今为止最好的理论。

public @ResponseBody MyResponse createTrip(@RequestBody MyRequest request, HttpServletRequest httpRequest) {
    // De-serializing the request body fails the second time, most likely because 
    // Jackson has already exhausted the reader instance. 

    // ... continuation stuff
}

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

另一种可能性是,默认情况下,Jackson默认情况下会在绑定后关闭输入流/阅读器,这可能会搞砸事情。但是有一个Jackson功能可以阻止这种自动关闭(mapper.configure(JsonParser.Feature.AUTO_CLOSE, false),或类似的东西)。

答案 1 :(得分:0)

我没有找到在合理的时间内使用@RequestBody解决此问题的方法。但我能够通过手动调用Jackson在初始方法调用期间反序列化请求来解决此问题。