https://bz.apache.org/bugzilla/show_bug.cgi?id=57626

            Bug ID: 57626
           Summary: IllegalStateException: zip file closed
           Product: Tomcat 8
           Version: 8.0.18
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: major
          Priority: P2
         Component: Jasper
          Assignee: dev@tomcat.apache.org
          Reporter: kenny.mo...@cipal.be

Our webapp was working fine with Tomcat 8.0.14, we recently did an upgrade to
8.0.18 and since then we are experiencing an exception during the compilation
of the JSP pages.

The exception is effectively an IllegalStateException, with message zip file is
closed.

We did some debugging in the Tomcat source code and found out that the probable
cause of this issue is the fix applied to ensure that all JARs files gets
properly closed to prevent resource leaks (SVN revision 1641056).

More concretely in JspCompilationContext, the method getLastModified() will use
an already closed instance of the tagJar. This occurs when the JSP file gets
recompiled, and thus not upon first compilation.

The full exception is:

java.lang.IllegalStateException: zip file closed 
        java.util.zip.ZipFile.ensureOpen(ZipFile.java:670) 
        java.util.zip.ZipFile.getEntry(ZipFile.java:310) 
        java.util.jar.JarFile.getEntry(JarFile.java:240) 
       
org.apache.tomcat.util.scan.JarFileUrlJar.getLastModified(JarFileUrlJar.java:87)
 
       
org.apache.jasper.JspCompilationContext.getLastModified(JspCompilationContext.java:358)
 
        org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:434) 
        org.apache.jasper.compiler.Compiler.isOutDated(Compiler.java:408) 
       
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:563) 
       
org.apache.jasper.servlet.JspServletWrapper.loadTagFile(JspServletWrapper.java:239)
 
       
org.apache.jasper.compiler.TagFileProcessor.loadTagFile(TagFileProcessor.java:580)
 
       
org.apache.jasper.compiler.TagFileProcessor.access$000(TagFileProcessor.java:50)
 
       
org.apache.jasper.compiler.TagFileProcessor$TagFileLoaderVisitor.visit(TagFileProcessor.java:662)
 
        org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1536) 
        org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376) 
        org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428) 
        org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434) 
        org.apache.jasper.compiler.Node$Root.accept(Node.java:464) 
        org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376) 
       
org.apache.jasper.compiler.TagFileProcessor.loadTagFiles(TagFileProcessor.java:680)
 
        org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:229) 
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:356) 
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:336) 
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:323) 
       
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:570) 
       
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:356) 
       
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) 
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) 
        javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
       
org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1078) 
       
org.apache.struts.tiles.TilesRequestProcessor.doForward(TilesRequestProcessor.java:295)
 
       
org.apache.struts.tiles.TilesRequestProcessor.processTilesDefinition(TilesRequestProcessor.java:271)
 
       
org.apache.struts.tiles.TilesRequestProcessor.processForwardConfig(TilesRequestProcessor.java:332)
 
       
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:232) 
        org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913) 
        org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449) 
        javax.servlet.http.HttpServlet.service(HttpServlet.java:618) 
        javax.servlet.http.HttpServlet.service(HttpServlet.java:725) 
        org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
        be.cipal.setup.SetupFilter.doFilter(SetupFilter.java:60) 
        be.cipal.web.struts.tiles.AppModeFilter.doFilter(AppModeFilter.java:45) 
        be.cipal.filter.UTF8Filter.doFilter(UTF8Filter.java:44)

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to