Two Laptop Bag*
The moose likes Servlets and the fly likes how many times init() method gets called Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of OCM Java EE 6 Enterprise Architect Exam Guide this week in the OCMJEA forum!
JavaRanch » Java Forums » Java » Servlets
Bookmark "how many times init() method gets called" Watch "how many times init() method gets called" New topic
Author

how many times init() method gets called

ramesh turlapati
Greenhorn

Joined: Apr 02, 2008
Posts: 4
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

Joined: Apr 05, 2010
Posts: 96
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

Joined: Apr 02, 2008
Posts: 4
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

Joined: Mar 17, 2010
Posts: 1051

init() as well as destroy method is called only once during the life cycle of a servlet.

Only service method is called repeatedly


SCJP6.0,My blog Ranchers from Delhi
Chinna Eranna
Ranch Hand

Joined: Dec 08, 2009
Posts: 174

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.


- Chinna
Seetharaman Venkatasamy
Ranch Hand

Joined: Jan 28, 2008
Posts: 5575

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

Joined: Jan 10, 2002
Posts: 61103
    
  66

The single thread model was deprecated long long ago and should never be used.


[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: how many times init() method gets called