getOutputStream () уже был вызван для этого ответа на второй запрос сервлета - PullRequest
0 голосов
/ 15 ноября 2011

привет, у меня проблема с тем, что я не могу положить палец на .....

servletResp.setHeader("Expires","0")
servletResp.setHeader("Cache-Control","must-revalidate, post-check=0, pre-check=0")
servletResp.setHeader("Pragma","public")
servletResp.setHeader("Content-Disposition","inline; filename=invoice.pdf")

servletResp.setContentType("application/pdf")
servletResp.setContentLength( outStream.size())
servletResponseStream.write(outStream.toByteArray())
outStream.close()
servletResponseStream.flush()
servletResponseStream.close()

В приведенном выше коде предположим, что outStream имеет чтение в файле PDF.Код отображается нормально по первому запросу.По второму запросу я получаю:

java.lang.IllegalStateException: getOutputStream() has already been called for this response

, не имеет значения, что такое outputtream.Даже если я сделаю совершенно новый байт [2] и напишу, что тот же результат произойдет.На первый запрос сервер отвечает нормально.В секунду происходит указанное выше исключение ....

Любая помощь будет приветствоваться

1 Ответ

0 голосов
/ 15 ноября 2011

Код в вашем вопросе не вызывает getOutputStream() и не делает ничего, что могло бы вызвать его.Таким образом, я бы пришел к выводу, что причина исключения находится где-то еще.

Суть в том, что вы можете только ServletResponse.getOutputStream() и / или getWriter() вызвать один раз для данного ответа.Где-то ваше приложение вызывает getOutputStream или getWriter более одного раза.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...