Does anyone know if there is a way to make Tomcat (v. 4.1.24) compile all of the JSPs in a given context at one time, say, for instance, at server startup or perhaps upon some explicit command? It would be nice if when I make changes and deploy them to a live webapp, I could just go ahead and tell tomcat to precompile everything it finds in the webapp context, prior to any particualr request for a JSP. Thanks in advance for any help! Aaron L. Beverly
You don't need any Tomcat specific functionality to get all of your servlets/jsp pages translated and compiled before a request is ever made. You should use the deployment descriptor (web.xml file) of your web application. Simply use the tag <load-on-startup>1</load-on-startup> under the <servlet> element. For a jsp page, it looks like this: <servlet> <servlet-name>MyJspPage</servlet-name> <jsp-file>/jsp/myJspPage.jsp</jsp-file> <load-on-startup>1</load-on-startup> </servlet> You should put the load-on-startup element in every servlet element where the body content of the tag is the order that the servlet should be translated/compiled.
Hmmm, seems that the web.xml route would be completely unweildly for anything but a rather trivial web application. Most of mine tend to have in the hundreds of JSP pages. I had started writing a 'web monkey' servlet to try to hunt down and hit every JSP, but I never really finished it. Also, most of the JSPs expect a controller to forward to them, so a direct hit may cause them to compile, but tends to generate a bunch of errors that I'd rather not have clogging the log files. The Ant script is a great idea, but there's still the errors-in-the-log problem. Anybody got a wifty idea for that one? bear [ September 26, 2003: Message edited by: Bear Bibeault ]
Thanks for the suggestions. Yeah, the load-on-startup solution is really not practical in my case, since I have about 1,000 JSPs in this web-app. Thanks, tho for the link to the script that precompiles JSPs. I will check it out. Hopefully it can do the trick. Thanks!