Lifecycle of a Servlet: From Initialization to Destruction
Lifecycle of a Servlet: From Initialization to Destruction
जब हम Java Servlets के बारे में पढ़ते हैं, तो सबसे जरूरी concept होता है — Servlet Lifecycle. यानी, एक Servlet अपने पूरे life में किन-किन phases से होकर गुजरता है। यह process समझना बहुत जरूरी है क्योंकि यही बताता है कि Servlet कब memory में load होता है, कब execute होता है और कब destroy किया जाता है। इस blog में हम step-by-step Servlet के पूरे lifecycle को आसान भाषा में समझेंगे ताकि आप exam में इसे confidently लिख सकें।
Introduction to Servlet Lifecycle
Servlet Lifecycle का मतलब होता है Servlet का पूरा जीवन चक्र — यानी जब Servlet load होता है, initialize होता है, request handle करता है और end में destroy होता है। Servlet lifecycle को control करने के लिए Servlet container (जैसे Tomcat, GlassFish) कुछ specific methods को call करता है।
ये main methods हैं:
init()— Servlet को initialize करने के लिएservice()— Client requests को process करने के लिएdestroy()— Servlet को memory से हटाने के लिए
इन तीनों methods के अलावा constructor और init parameters भी lifecycle में role निभाते हैं। अब हम इन steps को detail में समझते हैं।
Servlet Lifecycle Phases
Servlet lifecycle के कुल पाँच main stages होते हैं। हर stage का अपना specific काम होता है। नीचे हमने step-by-step explain किया है:
1. Loading and Instantiation
जब web container को पहली बार Servlet class की जरूरत होती है (जैसे user ने Servlet को access किया), तब container Servlet class को load करता है। Load होने के बाद container Servlet का object create करता है — यही process कहलाता है Instantiation.
Servlet class load होने के लिए container Class.forName() या equivalent class loader use करता है। Object create होने के बाद constructor call होता है।
public class MyServlet extends HttpServlet {
public MyServlet() {
System.out.println("Servlet object created");
}
}
ऊपर दिए code में जब Servlet पहली बार load होगा, तब constructor message print करेगा।
2. Initialization (init() method)
Servlet load और instantiate होने के बाद container init() method call करता है। यह method Servlet को initialize करने के लिए होता है — यानी जरूरी resources (जैसे database connection, configuration data) को setup करना।
init() method एक बार ही call होता है, जब Servlet पहली बार load होता है।
public void init() throws ServletException {
System.out.println("Servlet initialized successfully.");
}
अगर आपको initialization parameters चाहिए, तो आप web.xml में define कर सकते हैं और getInitParameter() method से fetch कर सकते हैं।
3. Request Handling (service() method)
Servlet initialize होने के बाद जब भी client (जैसे browser) कोई request भेजता है, तब container service() method call करता है। यह method हर incoming request के लिए run होता है।
यही वह phase है जहाँ Servlet actual काम करता है — यानी request को process करता है और response generate करता है।
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<h2>Hello, this is Servlet Response!</h2>");
}
अगर Servlet class HttpServlet को extend कर रही है, तो service() method internally HTTP methods (जैसे doGet(), doPost()) को call करता है।
4. Destruction (destroy() method)
जब Servlet container को लगता है कि Servlet की अब जरूरत नहीं है (जैसे server shutdown या application undeploy हो रहा हो), तब वह destroy() method call करता है। यह phase Servlet को memory से remove करने से पहले cleanup का मौका देता है।
इस method में आप open resources को close कर सकते हैं — जैसे database connections, file handles आदि।
public void destroy() {
System.out.println("Servlet destroyed. Resources released.");
}
5. Garbage Collection
Servlet के destroy होने के बाद उसका object Java garbage collector के control में चला जाता है। जब JVM को memory free करनी होती है, तो garbage collector उस Servlet object को delete कर देता है।
इस phase में Servlet का कोई manual control नहीं होता — ये JVM के internal mechanism का हिस्सा है।
Servlet Lifecycle Diagram (Step by Step)
नीचे दिए diagram को logically समझें —
- Step 1: Servlet class load होती है।
- Step 2: Servlet object create होता है।
- Step 3:
init()method call होता है। - Step 4:
service()method बार-बार request handle करता है। - Step 5:
destroy()method call होता है।
ये पूरा process Servlet container handle करता है। Developer को सिर्फ methods define करनी होती हैं।
Servlet Lifecycle Methods Summary (Table)
| Stage | Method | Description | Called By |
|---|---|---|---|
| Loading | Constructor | Servlet object create होता है | Container |
| Initialization | init() |
Servlet initialization और resource allocation | Container |
| Request Processing | service() |
Client request handle करता है | Container |
| Destruction | destroy() |
Resources release करता है | Container |
Example: Complete Servlet Lifecycle Program
नीचे एक complete Servlet का example दिया गया है जो initialization से लेकर destruction तक का पूरा flow दिखाता है:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class LifecycleExample extends HttpServlet {
public void init() throws ServletException {
System.out.println("Servlet initialized...");
}
public void service(ServletRequest req, ServletResponse res)
throws ServletException, IOException {
res.setContentType("text/html");
PrintWriter out = res.getWriter();
out.println("<h3>Handling Request in service() method</h3>");
}
public void destroy() {
System.out.println("Servlet destroyed...");
}
}
जब यह Servlet पहली बार execute होगा, तो:
- init() method एक बार call होगा, Servlet initialization के लिए।
- service() method हर request पर call होगा।
- destroy() method end में call होगा जब Servlet memory से remove किया जाएगा।
Servlet Lifecycle in Real-World Applications
Real-world में Servlet lifecycle का use हर web application में होता है। जब भी user कोई form submit करता है या data access करता है, Servlet वही request handle करता है। उदाहरण के लिए:
- init() — Database connection open करता है।
- service() — User data validate करता है और response generate करता है।
- destroy() — Connection close करता है जब application बंद होती है।
इस process से server efficient तरीके से resources manage करता है और performance stable रहती है।
Difference Between init(), service(), and destroy()
| Feature | init() | service() | destroy() |
|---|---|---|---|
| Purpose | Servlet initialization | Request handling | Resource cleanup |
| Called | Once | For every request | Once before removal |
| Execution Time | At Servlet loading | During client request | At Servlet unload |
Importance of Servlet Lifecycle
Servlet lifecycle को समझने से आप यह जान पाते हैं कि web application में resources को कब allocate और release करना चाहिए। यह knowledge developers को efficient, fast और scalable web applications बनाने में मदद करता है।
- Proper initialization से performance better होती है।
- Efficient resource handling से memory leak नहीं होता।
- Lifecycle methods को override करके custom logic add किया जा सकता है।
Exam Tips (For Students)
- Exam में अक्सर पूछा जाता है — “Explain the lifecycle of a Servlet with diagram.”
- इसलिए diagram या 5-step explanation जरूर याद रखें।
- init(), service(), और destroy() के purpose clear रखें।
- अगर short answer पूछे जाएँ, तो 2–3 lines में हर phase explain करें।
Quick Notes (Revision Friendly)
- Servlet Lifecycle = Load → Init → Service → Destroy → GC
- init() — सिर्फ एक बार चलता है।
- service() — हर request पर चलता है।
- destroy() — Servlet खत्म होने पर चलता है।
- Container पूरे lifecycle को manage करता है।
- Lifecycle समझना Servlet-based Web Application का core हिस्सा है।