java.IOException

댓글수0 다음블로그 이동

메신저/Stream closed

java.IOException

안드로이드 개발
댓글수0

http://cafe.naver.com/javachobostudy





















입사한지 얼마 되지 않은 신입입니다...

 

얼마전 사수가 소스를 보라고 줬는데..

 

DB커넥해서 아이디랑 비밀번호를 가져와서 로그인 하는 건데요.

 

어찌어찌 수정해서 돌아가긴 하는거 같은데 저런 에러가 뜨네요..

 

사수한테 물어봐도 모른체하고.. 이렇게 도움을 청해봅니다.. ㅠㅠ

 

[DbcpConnectionPool] Init Basic DataSource  
[DAOManager] Initialize Done
Initialize Complete DB Pool [ DBInitServlet.init() ] : justfun.dao.DAOManager@173d391
2월 16, 2012 10:07:32 오전 org.apache.coyote.http11.Http11Protocol start
정보: Starting Coyote HTTP/1.1 on http-8080
2월 16, 2012 10:07:33 오전 org.apache.jk.common.ChannelSocket init
정보: JK: ajp13 listening on /0.0.0.0:8009
2월 16, 2012 10:07:33 오전 org.apache.jk.server.JkMain start
정보: Jk running ID=0 time=0/78  config=null
2월 16, 2012 10:07:33 오전 org.apache.catalina.startup.Catalina start
정보: Server startup in 3521 ms
2월 16, 2012 10:07:34 오전 org.apache.catalina.core.StandardWrapperValve invoke

 

//////////////////


심각: Servlet.service() for servlet jsp threw exception
java.io.IOException: Stream closed
 at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)
 at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
 at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
 at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
 at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
 at org.apache.jsp.index1_jsp._jspService(index1_jsp.java:408)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
 at java.lang.Thread.run(Thread.java:722)

 

이 작성자의 게시글|더보기
덧글 7개||조회수 97
  • 2012/02/16 13:14답글

    신고

    소켓 생성하고 커넥션 생성하는 부분에서 문제가 있어 보입니다.
    자세한건 보여주신게 너무 적어 잘 모르겠네요 -_-;

  • 2012/02/16 15:54답글

    신고

    관련 jsp를 봐야 할듯..

  • 2012/02/16 16:01답글

    신고

    outputstream 객체가 이미 닫혀 있는데 거기다가 무언가를 write해서 발생하는 것 같습니다.

    out.write("값"); 과 같은 코드가 있으면 그이전에 out.close(); 가 먼저 호출 되지 않았나 싶습니다.

  • 2012/02/17 09:40답글

    신고

    Stream closed
    라고 써있네요. 위에 용이님 말씀따라 IO가 close 됐는데 그 후에 사용하려고 한 거 같습니다.

  • 2012/02/19 08:06답글

    신고

    예외추적된 내용을 잠깐 분석해 보죠.

    at org.apache.jasper.runtime.JspWriterImpl.ensureOpen(JspWriterImpl.java:204)
    at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:115)
    at org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
    at org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
    at org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
    at org.apache.jsp.index1_jsp._jspService(index1_jsp.java:408)

    이 로그는 메소드가 호출되는 스택이 덤프된것으로 예외가 발생하였을때 어디서 발생을 하였는지 그리고 문제가 발생하게 된 원인이 무엇인지 짐작할수 있는 정보가 됩니다. 
    순서는 아래에서 위로 분석합니다. 

    먼저 index.jsp의 408라인에서 JSPFactoryImpl클래스의 releasePageContext 메소드를 호출하고 있으며 이는 님이 작성하신 코드가 아니라 JSP에 덧붙여진 코드 즉, 님이 호출하신게 아닌 JSP페이지 자체에서 호출을 하는겁니다.

  • 2012/02/19 08:10답글

    신고

    그렇다면 이미 님이 작성하신 코드는 모두 실행이 된 상태라고 볼수 있습니다. 

    그럼 왜 오류가 발생했느냐? JSP는 처리가 완료되면 현재 출력버퍼에 남아있는 데이터를 플러시(Flush)하고 스트림을 닫게 됩니다. 

    스택의 맨 위를 보면 ensureOpen() 메소드가 호출되고 있는데 이 메소드는 스트림이 열려있는지 닫혀있는지 확인하게 되는데 이때 스트림이 닫혀있기에 출력버퍼에 남아 있는 데이터를 송신하지 못하므로 예외를 터트리게 됩니다. 

    즉, JSP페이지 내부의 사용자 코드의 처리가 완료되고 스트림을 닫을라 했는데 이미 닫혀서 안된다는 의미가 되는것이죠.. 

    해결방법은 index.jsp 페이지를 열어 잘 확인해 보시면 out.close() 라는 코드가 있을겁니다. 그 코드를 제거해주시면 문제가 해결되실겁니다.

  • 2012/02/21 18:16답글

    신고

    답변 감사드립니다~ ㅠㅠ


맨위로

http://blog.daum.net/haha25/5388388

신고하기