DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6989>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=6989 Unable to read tld file during parallel JSP compilation Summary: Unable to read tld file during parallel JSP compilation Product: Tomcat 3 Version: 3.2.3 Final Platform: Sun OS/Version: Solaris Status: NEW Severity: Major Priority: Other Component: Jasper AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] In our production environment we observe a strange exception during JSP compilation, which after our interpretation is due to a bug in Tomcat. Our JSP contain these statements: <% %><%@taglib uri="/WEB-INF/tld/struts-logic.tld" prefix="logic"%><% %><%@taglib uri="/WEB-INF/tld/struts-bean.tld" prefix="bean"%> Normally, this works, i.e. the tld files are found, the JSP are compiled, and the application works fine. However from time to time we get the following kind of exception if we start Tomcat and try to surf our site: org.apache.jasper.compiler.CompileException: /var/coremedia-3.2.7/de/generator/coremedia/templates/Redesign/vision/10hheaders ssl.jsp(33,2) Unable to open taglibrary /WEB-INF/tld/struts-bean.tld : null (The full stack trace will be given below.) Note that we get this exception without modifying our application. Especially the tld files and the jar files with the tag handler classes are unmodified and have the same permissions as when the application works without problems. The error is difficult to reproduce, but occurs often enough to be a real problem for the production environment. We assume that the problem has something to do with parallel requests beeing processed in Tomcat during JSP compilation for the following reasons: - We have quite a lot of web servers for the site (something about 50 machines), with different hardware architectures, but all running Sun Solaris 8 as operating system. Some people claim to have observed that the problem occurs significantly more often on multiprocessor machines. - Currently we help ourselves by calling every JSP once with a script before exposing a server to real user requests. The script requests the pages sequentially so that the JSP are compiled without parallel load on the server. This does not really solve the problem, but makes it to occur with less probability. We have observed the exception with Tomcat 3.2.2 as well as with Tomcat 3.2.3. We use a Sun JDK 1.3.x on Sun Solaris 8 with different hardware. Many machines have more than one CPU. Here follows an example for the exception with full stack trace. It was observed with Tomcat 3.2.2: org.apache.jasper.compiler.CompileException: /var/coremedia-3.2.7/de/generator/coremedia/templates/Redesign/vision/10hheaders ssl.jsp(33,2) Unable to open taglibrary /WEB-INF/tld/struts-bean.tld : null at org.apache.jasper.compiler.JspParseEventListener.handleDirective(JspParseEventLi stener.java:713) at org.apache.jasper.compiler.DelegatingListener.handleDirective(DelegatingListener .java:116) at org.apache.jasper.compiler.Parser$Directive.accept(Parser.java:215) at org.apache.jasper.compiler.Parser.parse(Parser.java:1077) at org.apache.jasper.compiler.Parser.parse(Parser.java:1042) at org.apache.jasper.compiler.Parser$Tag.accept(Parser.java:833) at org.apache.jasper.compiler.Parser.parse(Parser.java:1077) at org.apache.jasper.compiler.Parser.parse(Parser.java:1042) at org.apache.jasper.compiler.Parser$Tag.accept(Parser.java:833) at org.apache.jasper.compiler.Parser.parse(Parser.java:1077) at org.apache.jasper.compiler.Parser.parse(Parser.java:1042) at org.apache.jasper.compiler.Parser$Tag.accept(Parser.java:833) at org.apache.jasper.compiler.Parser.parse(Parser.java:1077) at org.apache.jasper.compiler.Parser.parse(Parser.java:1042) at org.apache.jasper.compiler.Parser$Tag.accept(Parser.java:833) at org.apache.jasper.compiler.Parser.parse(Parser.java:1077) at org.apache.jasper.compiler.Parser.parse(Parser.java:1042) at org.apache.jasper.compiler.Parser$Tag.accept(Parser.java:833) at org.apache.jasper.compiler.Parser.parse(Parser.java:1077) at org.apache.jasper.compiler.Parser.parse(Parser.java:1042) at org.apache.jasper.compiler.Parser.parse(Parser.java:1038) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:209) at org.apache.jasper.servlet.JspServlet.doLoadJSP(JspServlet.java:612) at org.apache.jasper.servlet.JasperLoader12.loadJSP(JasperLoader12.java:146) at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:542) at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServle t.java:258) at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:2 68) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:429) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:500) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405) at org.apache.tomcat.core.Handler.service(Handler.java:287) at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372) at org.apache.tomcat.facade.RequestDispatcherImpl.doForward(RequestDispatcherImpl.j ava:222) at org.apache.tomcat.facade.RequestDispatcherImpl.forward(RequestDispatcherImpl.jav a:162) at hox.corem.servlets.GeneratorServlet.service(GeneratorServlet.java:431) at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405) at org.apache.tomcat.core.Handler.service(Handler.java:287) at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372) at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:797) at org.apache.tomcat.core.ContextManager.service(ContextManager.java:743) at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConne ctionHandler.java:213) at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416) at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501) at java.lang.Thread.run(Thread.java:484) -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>