Here's what I want to do:
After Tomcat has been restarted, I want to recompile all of the JSPs in a certain directory (and all child directories). I wrote a servlet that does this and works fine when I run it in command line after Tomcat boots. I want to precompile so the first visitor to a JSP doesn't experience that wait time for Tomcat to compile.
So I tried loading my servlet (load-at-startup) at startup in Tomcat's web.xml (no go), my application's web.xml (no go), and even a 'dummy" application's web.xml (no go).
The problem seems to be that the JSP pages are not available until Tomcat has finished the bootup process. My servlet gets called, but when it tries to fetch the first URL (http://domain.com/page.jsp?precompile=true) nothing else happens. Obviously the java.net.URL cannot make a connection since Tomcat hasn't finished booting to make JSPs available.
Besides stopping/starting Tomcat and recompiling the JSPs from a batch script, am I just wasting my time here or is there someway to do this after Tomcat boots?
stdout.log:
Aug 6, 2004 3:39:33 PM org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
Aug 6, 2004 3:39:33 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 2188 ms
Aug 6, 2004 3:39:33 PM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
Aug 6, 2004 3:39:33 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.0.27
Aug 6, 2004 3:39:33 PM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
Aug 6, 2004 3:39:34 PM org.apache.catalina.startup.ContextConfig applicationConfig
INFO: Missing application web.xml, using defaults only StandardEngine[Catalina].StandardHost[localhost].StandardContext[]
Aug 6, 2004 3:39:35 PM org.apache.catalina.core.StandardHost getDeployer
INFO: Create Host deployer for direct deployment ( non-jmx )
Aug 6, 2004 3:39:35 PM org.apache.catalina.core.StandardHostDeployer install
INFO: Processing Context configuration file URL file:E:\java\Tomcat\conf\Catalina\localhost\admin.xml
Aug 6, 2004 3:39:35 PM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true
Aug 6, 2004 3:39:35 PM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.struts.action.ActionResources', returnNull=true
Aug 6, 2004 3:39:36 PM org.apache.struts.util.PropertyMessageResources <init>
INFO: Initializing, config='org.apache.webapp.admin.ApplicationResources', returnNull=true
Aug 6, 2004 3:39:38 PM org.apache.catalina.core.StandardHostDeployer install
INFO: Processing Context configuration file URL file:E:\java\Tomcat\conf\Catalina\localhost\balancer.xml
Aug 6, 2004 3:39:38 PM org.apache.catalina.core.StandardHostDeployer install
INFO: Processing Context configuration file URL file:E:\java\Tomcat\conf\Catalina\localhost\manager.xml
Aug 6, 2004 3:39:38 PM org.apache.catalina.core.StandardHostDeployer install
INFO: Installing web application at context path /aatz from URL file:E:\java\Tomcat\webapps\aatz
Aug 6, 2004 3:39:38 PM org.apache.catalina.startup.ContextConfig applicationConfig
INFO: Missing application web.xml, using defaults only StandardEngine[Catalina].StandardHost[localhost].StandardContext[/aatz]
Aug 6, 2004 3:39:39 PM org.apache.catalina.core.StandardHostDeployer install
INFO: Installing web application at context path /dummy from URL file:E:\java\Tomcat\webapps\dummy
RUNNING TOMCATSTARTUP
url=http://www.domain.com/page2.jsp?precompile=true
fetching http://www.domain.com/page2.jsp?precompile=true
(this is where it hangs)
At 10:44 AM 8/5/2004, you wrote:
Hi,
>Is there a configuration setting for Tomcat to it recompile all JSP files >at start up?
No.
You can precompile your JSPs as noted at http://jakarta.apache.org/tomcat/tomcat-5.0-doc/jasper-howto.html#Web%20 Application%20Compilation and other locations.
>If this is the only way, how and where do you specify startup servlets in >tomcat? And what if I want to enable/disable this feature on startup >-- what's best approach for setting the flag in tomcats config files?
You might want to read the Servlet Specification at some point. You specify startup servlets in Tomcat the way you do in all other servlet containers: by adding <load-on-startup>[number]</load-on-startup> to their declaration in your web.xml file. Since you would code this servlet, you can handle enable/disable of this precompilation however you want. A likely choice would be a simple servlet init-parameter, also in web.xml. This is not specific to Tomcat and would not go in Tomcat's configuration files.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
