I use the <load-on-startup> tag in web.xml to call a servlet when its context is started. The servlet's init() reads a configuration file and stores the configuration as a singleton object in the ServletContext.
I first thought this was a good idea, so that the user doesn't see the 2 or 3 seconds it takes to parse the file when a servlet is first called in the context. Now I use a similar method for 5 differents web apps, and it seems to have an effect on tomcat's startup time. If I understand the startup process correctly, this is what happens: - tomcat reads its server.xml - tomcat initializes all contexts defined in server.xml, loading any load-on-startup servlet for each context - then, only once all contexts are initialized, it opens connectors (HttpConnector, Ajp13Connector...) So now a user has to wait for ALL contexts to have been initialized before getting a response to a servlet call. If I remove the <load-on-startup> instruction in all the web.xml files, tomcat starts responding to requests much faster, but the first client to request a servlet on each context has a 2 seconds delay before his request is answered. Is my understanding of the startup process right? Would there be a way to avoid waiting for <load-on-startup> servlets to be loaded before opening an HttpConnector, but still having the servlet initialized before a clients makes a first request? -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
