我试图在依赖于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来反序列化请求来解决这个问题。