Tomcat[ERROR]java.io.IOException:流在上载文件处理时关闭(Apache Commons文件上载)

Tomcat[ERROR]java.io.IOException:流在上载文件处理时关闭(Apache Commons文件上载),java,servlets,apache-commons-fileupload,Java,Servlets,Apache Commons Fileupload,我遇到了一个问题,在过去的4-5个小时里,我在调试过程中摔断了头,最后在这里寻求帮助。我有一个简单的文件上传servlet,它使用ApacheCommonsServletFileUpload,在检测到文件时,它处理内容并生成输出文件。代码运行良好,生成了我可以保存的输出文件,但在Tomcat日志中,我看到每个请求都出现流关闭错误。当我在GAE的Jetty上运行相同的代码时,没有流关闭错误。最后,我刚刚下载了100MB JBoss作为服务器,JBoss中的相同代码库也没有错误。然而,我们的客户机使

我遇到了一个问题,在过去的4-5个小时里,我在调试过程中摔断了头,最后在这里寻求帮助。我有一个简单的文件上传servlet,它使用ApacheCommonsServletFileUpload,在检测到文件时,它处理内容并生成输出文件。代码运行良好,生成了我可以保存的输出文件,但在Tomcat日志中,我看到每个请求都出现流关闭错误。当我在GAE的Jetty上运行相同的代码时,没有流关闭错误。最后,我刚刚下载了100MB JBoss作为服务器,JBoss中的相同代码库也没有错误。然而,我们的客户机使用Tomcat,我们需要为Tomcat解决这个问题。在Tomcat 7.0.59、7.0.62和7.0.82中进行了测试,但存在相同的错误。代码和异常如下所示。非常感谢您的任何帮助

    public void doPost(HttpServletRequest req, HttpServletResponse response)
        throws IOException
{
    ServletFileUpload upload = new ServletFileUpload();
    FileItemIterator iter;
    String outFile = null;
        try
        {
            iter = upload.getItemIterator(req);

            while (iter.hasNext()) {
                FileItemStream item = iter.next();
                String name = item.getFieldName();
                InputStream stream = item.openStream();
                if (item.isFormField()) 
                {
                    //Log the form field names
                } 
                else 
                {
                    // File processing here.
                    System.out.println("Uploaded file field: " + name + " with file name: "
                            + item.getName());
                        try{
                        fileName = item.getName();
                        response.setHeader("Content-Disposition","attachment;filename=" + outFile);
                        ServletOutputStream out = response.getOutputStream();
                        ZipInputStream zis = new ZipInputStream(new BufferedInputStream(stream));
                        processRequest(zis, out);
                        req.setAttribute("fileName", outFile);
                    }
                    catch(Exception e)
                    {
                        log.error(e,e);
                    }

                }
            }
        }

        catch (FileUploadException e)
        {
            log.error(e,e);
        }

        catch(Exception e1)
        {
            log.error(e1,e1);
        }
}

}
异常行46引用该语句

                while (iter.hasNext()) {
异常堆栈跟踪如下所示

[ERROR]java.io.IOException:流已关闭
java.io.IOException:流已关闭
位于org.apache.catalina.connector.InputBuffer.read(InputBuffer.java:312)
位于org.apache.catalina.connector.CoyoteInputStream.read(CoyoteInputStream.java:200)
在org.apache.commons.fileupload.MultipartStream$ItemInputStream.makeAvailable上(MultipartStream.java:977)
位于org.apache.commons.fileupload.MultipartStream$ItemInputStream.close(MultipartStream.java:924)
在org.apache.commons.fileupload.MultipartStream$ItemInputStream.close(MultipartStream.java:904)
在org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl$FileItemStreamImpl.close(FileUploadBase.java:815)
位于org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.findNextItem(FileUploadBase.java:955)
在org.apache.commons.fileupload.FileUploadBase$FileItemIteratorImpl.hasNext(FileUploadBase.java:1040)
位于com.ks.act.web.BWScannerServlet.doPost(BWScannerServlet.java:46)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
位于org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
位于org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite(RuleChain.java:176)
位于org.tuckey.web.filters.urlrewrite.RuleChain.doRules(RuleChain.java:145)
位于org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest(UrlRewriter.java:92)
位于org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:394)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
位于org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
位于org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
位于org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
位于org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
位于org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
位于org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
运行(Thread.java:745)

@Nithin感谢您的编辑,我粘贴了代码,但没有反映异常数据。流中任何人的任何帮助都关闭了错误我还没有找到答案,感谢任何专家在这方面的帮助。