java.lang.IllegalStateException: getOutputStream() has already been called for this response
at org.apache.catalina.connector.Response.getWriter(Response.java:610)
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
at org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
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.checkCode_jsp._jspService(checkCode_jsp.java:137)
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:374)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
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:128)
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:286)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:767)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:697)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:889)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:619)这个问题并不太严重 ,严重的是导致服务器会连不到数据库。非常无奈  请高人帮忙解决!!!!!!!万分感谢!!!

解决方案 »

  1.   

    我的代码!!!!!public  boolean uploadFile(FormFile file,String fileName,String filePath){
    InputStream inStream=null;
    OutputStream outStream=null;
    try{
    String fullUrl=filePath+fileName;
    fullUrl=filePath+fileName;
    inStream=file.getInputStream();
    outStream=new FileOutputStream(fullUrl);
    int bytesRead=0;
    byte [] buffer=new byte[1024];
    while((bytesRead=inStream.read(buffer,0,1024))!=-1){
    outStream.write(buffer, 0, bytesRead);
    }
    }catch(Exception e){
    return false;
    }finally{
    try{
    if(inStream!=null){
    inStream.close();
    inStream =null;
    }
    if(outStream!=null){
    outStream.close();
    outStream =null;
    }
    }catch(Exception e){
    return false;
    }
    }
    return true;
    }
      

  2.   

    别沉下去阿,望高手来帮忙解决下。  我这个uploadFile方法是在一个ACTION里循环去调用的不知道问题是不是出在这里了。  单独上传一个文件时候是没有任何问题的。循环上传之后日志文件里就有这样的异常了。
      

  3.   

    你是不是有个Servlet里试图使用response.getOutputStream()?
      

  4.   

    [code]
    getOutputStream() has already been called for this response 
    at org.apache.catalina.connector.Response.getWriter(Response.java:610) 
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198) 
    [/code]
    看你的出错信息和你贴的代码根本不是一回事.
    从出错信息来看应该是你想向response中写入数据,你在jsp文件中打开了response的数据流,如果是这样的话,你嵌在jsp文件中的代码前面不能有文字,包括空格,或者直接使用servlet写就不会出问题了,不知道腻的是不是这个问题。
      

  5.   

    你的getOutputStream()在哪呢?错误是说你重复调用这个方法,另外说一下,你outStream写完后最好flush一下,即outStream.flush();
      

  6.   

    getOutputStream() has already been called for this response 
    从这里就可以看出来,一次响应调用了多次getOutputStream()方法
      

  7.   

    这个问题一般是jsp页面的问题
      

  8.   

    if(inStream!=null){ 
    inStream.close(); 
    inStream =null; 

    if(outStream!=null){ 
    outStream.close(); 
    outStream =null; 

    位置调一下