I am not a servlet expert.
But i understand that the servlet container can create 'n' number of instance of your servlet.
So for every instance of your servlet that is created your init method will be called.
If you want your init to be called only once - you can go for a single threaded model. That is not good.
Probably you are synchronising on a private method of your servlet class.
Check to see that you are synchronising on a static object.
It is better to provide a simple
test sample of what you are doing.
Then it can be obvious to people as to what you are doing and what is going wrong.
If i am wrong any where kindly let me know about it.
Thanks
Vijay Venkat