posted 17 years ago
AFAIK, the specification doesn't mandate when the container should load a servlet ( unless using <load-on-startup> ).
So the container can load and instantiate the class whenever it needs to. By using <load-on-startup>, you can be sure that your servlets will be loaded when the app is starting up and be available. Otherwise, the order is pretty much random and on a need-to basis. A servlet may be ready and waiting for requests, or it may be loaded and initialized only when a request comes for it.
And I'm not very sure about this but yes, I don't think it's necessary for the init() to be called immediately when the servlet is instantiated. But it must be called before the servlet can service any requests.