S e r v le t C o n ta in e r
T h r e a d P o o l
S e r v le t A
S e r v le t B
T h r e a d 1
T h r e a d 2
T h r e a d n
in it( )
in it( )
a llo c a t e t h r e a d
a llo c a te th r e a d
s e r v ic e ( )
s
e
rv i
c e
( )
r e le a s e th r e a d
r e le a s e th r e a d
a llo c a te th r e a d
s e r v ic e ( )
r e le a s e th r e a d
d e s tr o
y (
) d e s tr o y ( )
X
X
Figure 4: Typical Servlet Container Implementation
In this model, the Servlet Container creates a Thread Pool at start up time. A Thread Pool is a
collection of threads. When a new request is received, one of the available threads is allocated
to the request. The thread then runs the service() method of the servlet that maps to the
request. The thread is returned to the Thread Pool afterwards, so it can be re used for another
request. With this model, many requests can be handled simultaneously without the Servlet
Container having to instantiate any new objects. The number of available threads in the Thread
Pool is usually configurable, so performance can be optimized for the number of requests that
an application usually receives over a certain time period. If all threads are in use, and another
request is received, the synchronization capabilities of Java allow waiting for the next thread to
become available.
A new instance of a servlet is only created when the servlet is requested for the first time. The
Servlet container makes sure that the servlet's initialization method init() has finished before the
service() method is called. The servlet's service() method can be run many times, and can even
26
Java Web Hosting Application Development Using Java Technologies Hosting
|
|
|
|
TotalRoute.net Business web hosting division of Vision Web Hosting Inc. All rights reserved. |