Win a copy of Mesos in Action this week in the Cloud/Virtualizaton forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

how many times init() method gets called

 
ramesh turlapati
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

How many times init() method gets called when we implement the single thread model. I think it's only one time only, is it correct? . As I know for each request servlet container creates one servlet instance to serve the incoming request. Does init() method gets called for each servlet instance?
 
Souvvik Basu
Ranch Hand
Posts: 96
Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I'm not sure if the servlet container creates a new instance of the servlet for each request. What happens is a single thread is executing at a given time; all other requests need to wait till that thread is finished executing. But there is only 1 instance of the servlet created. Hence, the question of init() method getting called multiple times doesnt arise. That method is called only once during the life cycle of the servlet.
 
ramesh turlapati
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi Souvvik Basu, what you said is correct in you point of view. To implement single thread model there are two techniques.

1. Only one servlet instance and other request will wait in queue to get chance

2. For each request servlet container creates new servlet instance.

these techniques depends on third party vendors .
 
Shanky Sohar
Ranch Hand
Posts: 1051
Eclipse IDE Firefox Browser
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
init() as well as destroy method is called only once during the life cycle of a servlet.

Only service method is called repeatedly
 
Chinna Eranna
Ranch Hand
Posts: 174
Java
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Ramesh,

As you said For each Servlet instance, init() is called once.
If the Servlet Container is implemented to create multiple instances of servlet, then it will invoke init() method for each servlet instance.

BTW, SingleThreadModel is deprecated in Servlet 2.4 spec.
 
Seetharaman Venkatasamy
Ranch Hand
Posts: 5575
Eclipse IDE Java Windows XP
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
from api

If a servlet implements this interface, you are guaranteed that no two threads will execute concurrently in the servlet's service method. The servlet container can make this guarantee by synchronizing access to a single instance of the servlet, or by maintaining a pool of servlet instances and dispatching each new request to a free servlet.


so as of tomcat 5.5, it wont create a new instance of servlet for each request even servlet implements SingleThreadModel. instead it synchorize access to service method.
 
Bear Bibeault
Author and ninkuma
Marshal
Pie
Posts: 64843
86
IntelliJ IDE Java jQuery Mac Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The single thread model was deprecated long long ago and should never be used.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic