Тест Maven на сервлете, получающем исключение IllegalStatException: не удается сбросить буфер - ответ уже принят - PullRequest
0 голосов
/ 21 сентября 2010

Во время фазы тестирования моей сборки maven я записываю следующий код в один метод @test:

        request.clearAttributes();
        response.reset();
        String story_uuid = qit.getQI().getStory_uuid();
        assertNotNull(story);
        request.setParameter("story_uuid", story_uuid);
        request.setParameter("activity", "get");
        queue.doPost(request, response);
        assertEquals(response.getErrorMessage(), HttpServletResponse.SC_OK, response.getStatus());


        request.clearAttributes();
        response.reset();    //**THIS RESET HERE**//
        request.setParameter("story", story_uuid);
        request.setParameter("activity", "revert");
        queue.doPost(request, response);
        assertEquals(response.getErrorMessage(), HttpServletResponse.SC_OK, response.getStatus());

Строка response.reset() с //**THIS RESET HERE**// вызывает следующую ошибку:

java.lang.IllegalStateException: Cannot reset buffer - response is already committed

Разве я не должен использовать один метод для нескольких вызовов моего сервлета?

1 Ответ

2 голосов
/ 21 сентября 2010

reset() работает только тогда, когда ответ еще не зафиксирован.Это в основном очищает выходной буфер.Вы не можете отправить несколько ответов на один запрос.Это полностью нарушает спецификацию HTTP.Для каждого запроса, отправляемого клиентом, сервер может отправить только один полный ответ.Когда ответ принят, вы находитесь в точке, откуда нет возврата.Если вы хотите отправить новый ответ обратно, вам нужно разрешить клиенту запустить новый запрос, чтобы вы могли отправить новый ответ обратно.

...