luehe 2004/05/24 14:33:48 Modified: jasper2/src/share/org/apache/jasper/compiler Compiler.java jasper2/src/share/org/apache/jasper/servlet JspServletWrapper.java Log: Added support for JSP compilations in a clustered env, where one server instance may use JSPs compiled by another server instance. Assume a JSP named foo.jsp, along with these timestamps: t1 = Timestamp of foo.jsp t2 = Timestamp of foo.class SI_1 = ServerInstance_1 SI_2 = ServerInstance_2 Problem description: - Suppose SI_1 compiles foo.jsp and loads corresponding class file. - foo.jsp is subsequently modified and recompiled by SI_2. - SI_1 accesses foo.jsp: Since t2>t1, it determines that no recompilation is necessary, and services the cached (outdated) class file With this commit, SI_1 will reload foo.class and service its updated contents. Revision Changes Path 1.87 +3 -0 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java Index: Compiler.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Compiler.java,v retrieving revision 1.86 retrieving revision 1.87 diff -u -r1.86 -r1.87 --- Compiler.java 21 May 2004 17:52:59 -0000 1.86 +++ Compiler.java 24 May 2004 21:33:48 -0000 1.87 @@ -543,6 +543,9 @@ outDated = true; } else { targetLastModified = targetFile.lastModified(); + if (checkClass) { + jsw.setServletClassLastModifiedTime(targetLastModified); + } if (targetLastModified < jspRealLastModified) { if( log.isDebugEnabled() ) { log.debug("Compiler: outdated: " + targetFile + " " + 1.37 +18 -0 jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServletWrapper.java Index: JspServletWrapper.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/servlet/JspServletWrapper.java,v retrieving revision 1.36 retrieving revision 1.37 diff -u -r1.36 -r1.37 --- JspServletWrapper.java 24 May 2004 21:22:00 -0000 1.36 +++ JspServletWrapper.java 24 May 2004 21:33:48 -0000 1.37 @@ -74,6 +74,7 @@ private boolean isTagFile; private int tripCount; private JasperException compileException; + private long servletClassLastModifiedTime; /* * JspServletWrapper for JSP pages. @@ -164,6 +165,23 @@ */ public void setCompilationException(JasperException je) { this.compileException = je; + } + + /** + * Sets the last-modified time of the servlet class file associated with + * this JspServletWrapper. + * + * @param lastModified Last-modified time of servlet class + */ + public void setServletClassLastModifiedTime(long lastModified) { + if (this.servletClassLastModifiedTime < lastModified) { + synchronized (this) { + if (this.servletClassLastModifiedTime < lastModified) { + this.servletClassLastModifiedTime = lastModified; + reload = true; + } + } + } } /**
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]