기술지원 문의

ResponseStream.lengthException 문제 문의
김태규 / 2008-02-20 09:10

안녕하세요.. 레진에 대한 기술적인 이슈가 있어 글을 남깁니다..

 

현재 구성이 Apache2.0.63 + java 1.5.0_14 + resin 3.0.25 + linux(2.6.9.55) 를 사용하여 파일서버 관련 테스트를 진행중입니다.

 

파일업로더시에는 문제가 없는데, 다운로드시 새로운 환경을 위와 같이 구축하고 나서는 아래와 같은 에러가 발생합니다.

 

이 에러가 레진에 의한 에러인가요? 만약 그렇다면 어떤식으로 이 부분을 해결할 수 있는지 도움 부탁드리겠습니다.

 

감사합니다.

 

[16:12:37.025] Compiling _jsp/_download__jsp.java
[16:12:37.261] java.lang.IllegalStateException: http://test.test.com/download.jsp: tried to write 54858 bytes with content-length 54814 (At ?, char=-125).

[16:12:37.261]  at com.caucho.server.connection.ResponseStream.lengthException(ResponseStream.java:548)
[16:12:37.261]  at com.caucho.server.connection.ResponseStream.writeNext(ResponseStream.java:416)
[16:12:37.261]  at com.caucho.server.connection.ToByteResponseStream.flushByteBuffer(ToByteResponseStream.java:518)
[16:12:37.261]  at com.caucho.server.connection.ToByteResponseStream.flushBuffer(ToByteResponseStream.java:424)
[16:12:37.261]  at com.caucho.server.connection.ResponseStream.flush(ResponseStream.java:579)
[16:12:37.261]  at com.caucho.server.connection.ServletOutputStreamImpl.flush(ServletOutputStreamImpl.java:73)
[16:12:37.261]  at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:124)
[16:12:37.261]  at java.io.FilterOutputStream.close(FilterOutputStream.java:140)
[16:12:37.261]  at _jsp._download__jsp._jspService(_download__jsp.java:232)
[16:12:37.261]  at com.caucho.jsp.JavaPage.service(JavaPage.java:60)
[16:12:37.261]  at com.caucho.jsp.Page.pageservice(Page.java:570)
[16:12:37.261]  at com.caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java:179)
[16:12:37.261]  at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:173)
[16:12:37.261]  at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
[16:12:37.261]  at com.caucho.server.hmux.HmuxRequest.handleRequest(HmuxRequest.java:420)
[16:12:37.261]  at com.caucho.server.port.TcpConnection.run(TcpConnection.java:514)
[16:12:37.261]  at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:520)
[16:12:37.261]  at com.caucho.util.ThreadPool.run(ThreadPool.java:442)
[16:12:37.261]  at java.lang.Thread.run(Thread.java:595)

 

p.s 실제 다운로드된 파일을 열어보니.. 상단에 22 개의 개행문자가 포함되어 있습니다.

[답변]ResponseStream.lengthException 문제 문의
기술지원팀 / 2008-02-21 10:59

안녕하세요 레진코리아 기술지원팀입니다.

먼저 상기 질문에 관한 문제는 Resin 관련 문제는 아닙니다.

다운로드시 버퍼 초기화를 하지못한 상태에서 버퍼 사이즈 보다 더 많은 버퍼를 사용하여 버퍼 해당 영역을 벗어나 쓸수 없다는 메세지로 판단됩니다.

 

그러므로 다운로드시

ServletResponse 메서드의 

response.rest();

을 이용해서 reset 후write 하도록 하시거나

setBufferSize(int size);

setContentLength(int ien);

를 이용하셔서 해당 response의 버퍼 싸이즈 크기를 늘리보시거나 응답 메세지 길이를

조절해 보시길 바랍니다.

 

 

질문에 대하여 만족할 만한 답변이 되었는지 모르겠습니다.

더 궁금하신 사항이 있으시면 언제든지 문의 하여 주시기 바랍니다.

감사합니다.