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



我试图在依赖于Spring MVC @RequestBody + Jackson的控制器动作上使用Jetty continuation来反序列化json请求。暂停请求工作得很好,但是当恢复连接(回复请求)时,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
}

任何想法?

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

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

最新更新