Проблемы возобновления продолжения Jetty 7 при использовании с Spring MVC @RequestBody - PullRequest
0 голосов
/ 13 декабря 2011

Я пытаюсь использовать продолжение Jetty для действия контроллера, основанного на Spring MVC @RequestBody + Джексоне для десериализации запроса json.Приостановка запроса работает хорошо, но когда пришло время возобновить соединение (ответить на запрос), Джексон уже «использовал» экземпляр средства чтения запросов, поэтому десериализация тела запроса завершилась неудачно.По крайней мере, это моя лучшая теория.

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 ]

1 голос
/ 15 декабря 2011

Другая возможность состоит в том, что, поскольку Джексон по умолчанию закрывает входной поток / считыватель после привязки по умолчанию, это может привести к путанице. Но есть функция Джексона, чтобы предотвратить это автоматическое закрытие (mapper.configure(JsonParser.Feature.AUTO_CLOSE, false) или что-то подобное).

0 голосов
/ 14 декабря 2011

Я не нашел способа решить эту проблему, используя @RequestBody в разумные сроки. Но я смог обойти эту проблему, вручную вызвав Джексона, чтобы десериализовать запрос во время первоначального вызова метода.

...