I've got a fairly straightforward page that includes these lines: <%@ taglib prefix="lz" tagdir="/WEB-INF/tags/lz" %> . . . <head> <title>My Page</title> <lz:base/> . . . </head> . . .
In resin 4.0.0, the presence of the <lz:base/> tag triggers some work on Resin's part that results in recompiling both the tag and the page. The tag is defined by a .tag file in WEB-INF/tags/lz: <%...@tag body-content="empty" %><%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %><% if (("http".equals(request.getScheme()) && request.getLocalPort() != 80) || ("https".equals(request.getScheme()) && request.getLocalPort() != 443)) { request.setAttribute("port", ":" + request.getLocalPort()); } %><base href="${pageContext.request.scheme}://$ {pageContext.request.serverName}${port}$ {pageContext.request.contextPath}/"/> Here is what I see in the logs (set to FINE for most everything): the request comes in, resin decides that the class created for the base tag is missing, recompiles it, and then detects that the class digest is modified (notably, the new digest is -1, whereas the old is -4088317106370417708). So then it compiles the page's JSP again. Timing for the request on the browser shows it takes about 300 ms (repeated reloads) to get it when I include the tag, and about 40 ms when I don't. If I include the code for the tag directly in my JSP, I see no recompilation, and similarly rapid page loads. Referencing JSTL tags like fmt: does not seem to cause this difficulty. I also see a "_jsp._index__jsp destroy" message in the logs before it gets the ClassNotFoundException. I don't know what that means. Here are the logs: [06-24 18:47:18.919] {http--80-9} FINE (com.caucho.server.port.TcpConnection) TcpConnection[id=9,] starting connection TcpConnection[id=http--80-9,http://*:80,ACCEPT], total=5 [06-24 18:47:18.920] {http--80-9} FINE (com.caucho.server.http.HttpRequest) Http[9] GET / HTTP/1.1 [06-24 18:47:18.920] {http--80-9} FINE (com.caucho.server.http.HttpRequest) Http[9] Remote-IP: 12.155.29.1:56273 [06-24 18:47:18.920] {http--80-9} FINE (com.caucho.server.http.HttpRequest) Http[9] Host: satdb.org [06-24 18:47:18.920] {http--80-9} FINE (com.caucho.server.http.HttpRequest) Http[9] User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17 [06-24 18:47:18.920] {http--80-9} FINE (com.caucho.server.http.HttpRequest) Http[9] Cache-Control: max-age=0 [06-24 18:47:18.920] {http--80-9} FINE (com.caucho.server.http.HttpRequest) Http[9] Accept: application/ xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/ *;q=0.5 [06-24 18:47:18.920] {http--80-9} FINE (com.caucho.server.http.HttpRequest) Http[9] Accept-Language: en-us [06-24 18:47:18.920] {http--80-9} FINE (com.caucho.server.http.HttpRequest) Http[9] Accept-Encoding: gzip, deflate [06-24 18:47:18.920] {http--80-9} FINE (com.caucho.server.http.HttpRequest) Http[9] Cookie: JSESSIONID=aaaRgt_gP5iYl6bUVcvis [06-24 18:47:18.920] {http--80-9} FINE (com.caucho.server.http.HttpRequest) Http[9] Connection: keep-alive [06-24 18:47:18.931] {http--80-9} FINE (com.caucho.jsp.Page) _jsp._index__jsp destroy [06-24 18:47:18.931] {http--80-9} FINE (com.caucho.jsp.PageManager) Jsp[] uri:/index.jsp(cp:,app:/export/home/satdb/www/org/satdb/www) -> / export/home/satdb/www/org/satdb/www/index.jsp [06-24 18:47:18.936] {http--80-9} FINE (com.caucho.make.ClassDependency) java.lang.ClassNotFoundException: _jsp._WEB_22dINF._tags._lz._base__tag in EnvironmentClassLoader[web- app:http://default] [06-24 18:47:18.936] {http--80-9} at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java: 1313) [06-24 18:47:18.936] {http--80-9} at com.caucho.loader.DynamicClassLoader.loadClass(DynamicClassLoader.java: 1291) [06-24 18:47:18.936] {http--80-9} at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) [06-24 18:47:18.936] {http--80-9} at java.lang.Class.forName0(Native Method) [06-24 18:47:18.936] {http--80-9} at java.lang.Class.forName(Class.java:247) [06-24 18:47:18.936] {http--80-9} at com.caucho.make.ClassDependency.<init>(ClassDependency.java:84) [06-24 18:47:18.936] {http--80-9} at _jsp._index__jsp.init(_index__jsp.java:143) [06-24 18:47:18.936] {http--80-9} at com.caucho.jsp.JspManager.preload(JspManager.java:320) [06-24 18:47:18.936] {http--80-9} at com.caucho.jsp.JspManager.compile(JspManager.java:218) [06-24 18:47:18.936] {http--80-9} at com.caucho.jsp.JspManager.createPage(JspManager.java:171) [06-24 18:47:18.936] {http--80-9} at com.caucho.jsp.JspManager.createPage(JspManager.java:150) [06-24 18:47:18.936] {http--80-9} at com.caucho.jsp.PageManager.getPage(PageManager.java:307) [06-24 18:47:18.936] {http--80-9} at com.caucho.jsp.PageManager.getPage(PageManager.java:237) [06-24 18:47:18.936] {http--80-9} at com.caucho.jsp.PageManager.getPage(PageManager.java:220) [06-24 18:47:18.936] {http--80-9} at com.caucho.jsp.QServlet.getSubPage(QServlet.java:295) [06-24 18:47:18.936] {http--80-9} at com.caucho.jsp.QServlet.getPage(QServlet.java:210) [06-24 18:47:18.936] {http--80-9} at com .caucho .server.dispatch.PageFilterChain.compilePage(PageFilterChain.java:238) [06-24 18:47:18.936] {http--80-9} at com .caucho.server.dispatch.PageFilterChain.doFilter(PageFilterChain.java: 145) [06-24 18:47:18.936] {http--80-9} at com.latencyzero.satdb.RequestFilter.doFilter(RequestFilter.java:114) [06-24 18:47:18.936] {http--80-9} at com .caucho .server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) [06-24 18:47:18.936] {http--80-9} at org .springframework .orm .hibernate3 .support .OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java: 198) [06-24 18:47:18.936] {http--80-9} at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:76) [06-24 18:47:18.936] {http--80-9} at com .caucho .server.dispatch.FilterFilterChain.doFilter(FilterFilterChain.java:87) [06-24 18:47:18.936] {http--80-9} at com .caucho .server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:185) [06-24 18:47:18.936] {http--80-9} at com .caucho .server.dispatch.ServletInvocation.service(ServletInvocation.java:264) [06-24 18:47:18.936] {http--80-9} at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:275) [06-24 18:47:18.936] {http--80-9} at com.caucho.server.port.TcpConnection.handleRequests(TcpConnection.java: 644) [06-24 18:47:18.936] {http--80-9} at com.caucho.server.port.TcpConnection $AcceptTask.doAccept(TcpConnection.java:1311) [06-24 18:47:18.936] {http--80-9} at com.caucho.server.port.TcpConnection$AcceptTask.run(TcpConnection.java: 1252) [06-24 18:47:18.936] {http--80-9} at com.caucho.util.ThreadPool $PoolThread.runTasks(ThreadPool.java:866) [06-24 18:47:18.936] {http--80-9} at com.caucho.util.ThreadPool $PoolThread.run(ThreadPool.java:779) [06-24 18:47:18.936] {http--80-9} [06-24 18:47:18.936] {http--80-9} FINE (com.caucho.make.ClassDependency) _jsp._WEB_22dINF._tags._lz._base__tag class digest is modified (old=-4088317106370417708,new=-1) [06-24 18:47:18.974] {http--80-9} CONFIG (com.caucho.java.JavaCompiler) Compiling _jsp/_index__jsp.java [06-24 18:47:18.975] {Thread-59} FINE (com.caucho.loader.JarListLoader) tools.jar does not exist (path=/usr/ local/java/versions/jdk1.6.0_12/jre/lib/tools.jar) [06-24 18:47:19.138] {Thread-59} FINE (com.caucho.java.InternalCompiler) [06-24 18:47:19.142] {http--80-9} FINE (com.caucho.java.JavaCompiler) merging .smap for _index__jsp.class _______________________________________________ resin-interest mailing list resin-interest@caucho.com http://maillist.caucho.com/mailman/listinfo/resin-interest