是不是多个线程索引同一个input stream,当某一个thread在执行完之后,把这个inputstream关闭了;而此时正在从这个input stream流中读取信息的线程就会抛出 java.io.IOException: Stream closed 异常

解决方案 »

  1.   

    但是在tomcat 下运行都是正常的
      

  2.   

    是在jsp中使用了输出流,没有处理好。
    在tomcat中jsp编译成servlet之后在函数_jspService(HttpServletRequest request, HttpServletResponse response)的最后
    有一段这样的代码
    finally {
    if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
    }
    这里是在释放在jsp中使用的对象,会调用response.getWriter(),因为这个方法是和
    response.getOutputStream()相冲突的!所以会出现以上这个异常。解决的办法
    在使用完输出流以后调用以下两行代码即可:
    out.clear();
    out = pageContext.pushBody();