One thing you have to remember about a Servlet is that YOU, the Servlet programer, are not responsible for the lifecyle of the Servlet. So, creating, initializing, threading and destroying a Servlet are not part of your domain. So, the programmer NEVER creates the Servlet, so the programmer would never invoke a constructor of a Servlet. The only people that might call a constructor on a Servlet are the people who implement the
J2EE application server, or more specifically, the web container, but as a Servlet programmer, that's none of your business, and as far as you're concerned, it never happens.
HOWEVER, the
Java Gods know that you'd likely want to respond to the creation or destruction of a Servlet, so they provide an init() and destroy() method that you can place code into. They people that implement the web container promise you that sometime after creating your sevlet, and before actually puttint it into service, they'll invoke your pesky little init method. So, you can't call the constructor, but you can respond to the creation lifecycle event by placing code in the init method.
That's the way I see it.
Cheers!
-Cameron McKenzie