Servlet Lifecycle হল সার্ভলেটের মধ্যে ব্যবহৃত তিনটি গুরুত্বপূর্ণ মেথডের সিরিজ যা সার্ভলেটের কার্যক্ষমতা এবং কার্যকারিতা পরিচালনা করে। একটি সার্ভলেট যখন ওয়েব সার্ভারে ইনস্ট্যান্সিয়েট হয়, তখন তা তার lifecycle মেথডগুলির মাধ্যমে কাজ শুরু করে এবং যখন সার্ভলেটটি আর প্রয়োজনীয় থাকে না, তখন তা destroy() মেথডের মাধ্যমে ধ্বংস করা হয়।
একটি সার্ভলেটের জীবনের তিনটি মূল ধাপ:
- init(): সার্ভলেটটি প্রথমবার সার্ভারে ইনস্ট্যান্সিয়েট হওয়ার পর কল হয়।
- service(): প্রতিটি ক্লায়েন্ট রিকোয়েস্টে সার্ভলেটটি এই মেথডে কাজ করে।
- destroy(): সার্ভলেটটি ধ্বংস হওয়ার আগে শেষবার কল হয়।
এসব মেথড সার্ভলেট ক্লাসের জন্য প্রয়োজনীয় এবং ওয়েব সার্ভারের দ্বারা স্বয়ংক্রিয়ভাবে ব্যবহৃত হয়।
Servlet Lifecycle এর ধাপসমূহ
1. init() মেথড
init() মেথড হল সার্ভলেটের প্রথম মেথড যা সার্ভলেটটি সার্ভারে লোড হওয়ার সময় প্রথমবার কল হয়। সার্ভলেটের ইনিশিয়াল কনফিগারেশন বা রিসোর্স সেটআপ করার জন্য এটি ব্যবহৃত হয়। সার্ভলেটটি যখন প্রথমবার ক্লায়েন্টের রিকোয়েস্টের জন্য প্রস্তুত থাকে, তখন এটি শুধুমাত্র একবারই কল হয়।
উদাহরণ:
public class MyServlet extends HttpServlet {
@Override
public void init() throws ServletException {
// ইনিশিয়ালাইজেশন কোড
System.out.println("Servlet initialized.");
}
}
এখানে:
- init() মেথডে সার্ভলেটের প্রাথমিক সেটআপ (যেমন ডেটাবেস কনফিগারেশন বা রিসোর্স লোড করা) করা যায়।
2. service() মেথড
service() মেথড সার্ভলেটের মূল মেথড যা ক্লায়েন্ট রিকোয়েস্টের প্রক্রিয়া করে এবং রেসপন্স প্রদান করে। যখনই সার্ভলেটকে কোনো HTTP রিকোয়েস্ট (যেমন GET, POST, PUT, DELETE) করা হয়, তখন service() মেথডটি কল হয়। এই মেথডটি কনকেটেনেটিভ ওয়েব অ্যাপ্লিকেশনগুলি পরিচালনা করতে ব্যবহৃত হয় এবং এটি ইনপুট প্রক্রিয়াকরণ এবং আউটপুট প্রদানের জন্য উপযুক্ত।
service() মেথডটির কাজ হল:
- HTTP রিকোয়েস্ট গ্রহণ করা
- রিকোয়েস্টের জন্য প্রাসঙ্গিক কাজ করা
- HTTP রেসপন্স প্রদান করা
উদাহরণ:
public class MyServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
response.getWriter().println("Hello, " + name);
}
}
এখানে:
- service() মেথডে ক্লায়েন্টের রিকোয়েস্টের সাথে কাজ করে এবং সেই অনুযায়ী রেসপন্স তৈরি করে পাঠানো হচ্ছে।
3. destroy() মেথড
destroy() মেথড হল সার্ভলেটের লাইফসাইকেলের শেষ ধাপ, যা সার্ভলেটের কার্যক্রম সম্পন্ন হওয়ার পরে কল হয়। এটি সাধারণত সার্ভলেটের রিসোর্স ফ্রী করতে ব্যবহৃত হয়, যেমন ডাটাবেস কানেকশন বন্ধ করা বা ফাইল সিস্টেমের রিসোর্স রিলিজ করা। এটি ওয়েব সার্ভারের কাজ যখন সার্ভলেটটি ডেস্ট্রয় (ধ্বংস) করা হয় তখন কল হয়।
উদাহরণ:
public class MyServlet extends HttpServlet {
@Override
public void destroy() {
// রিসোর্স রিলিজ করা
System.out.println("Servlet destroyed.");
}
}
এখানে:
- destroy() মেথডে সার্ভলেটটি ধ্বংস হওয়ার পূর্বে প্রাসঙ্গিক রিসোর্স পরিষ্কার বা বন্ধ করা হচ্ছে।
সার্ভলেট লাইফসাইকেলের পূর্ণ চিত্র
- init():
- প্রথমবার সার্ভলেট সার্ভারে লোড হওয়ার সময় কল হয়।
- সার্ভলেটের প্রাথমিক ইনিশিয়ালাইজেশন (ডেটাবেস কনফিগারেশন, এক্সটার্নাল রিসোর্স লোড) করা হয়।
- service():
- প্রতিটি HTTP রিকোয়েস্টের জন্য কল হয়।
- রিকোয়েস্ট প্রসেসিং এবং রেসপন্স প্রেরণ করা হয়।
- এটি সার্ভলেটের মধ্যে মূল কাজ, যেমন ডাইনামিক কন্টেন্ট তৈরি এবং ডেটাবেস ইন্টারঅ্যাকশন।
- destroy():
- সার্ভলেটটি সার্ভার থেকে নিষ্ক্রিয় বা ধ্বংস হওয়ার আগে কল হয়।
- সার্ভলেটের রিসোর্স বন্ধ বা পরিষ্কার করা হয়।
সার্ভলেট লাইফসাইকেল ম্যানেজমেন্ট
সার্ভলেট লাইফসাইকেল স্বয়ংক্রিয়ভাবে সার্ভার দ্বারা পরিচালিত হয় এবং ডেভেলপারদের এটি পরিচালনা করার জন্য অনেক কিছু করতে হয় না। তবে কিছু কাস্টম কার্যক্রম (যেমন কনফিগারেশন লোড করা, রিসোর্স রিলিজ করা ইত্যাদি) init() এবং destroy() মেথডগুলির মাধ্যমে করা যেতে পারে।
সার্ভলেট লাইফসাইকেল ম্যানেজমেন্টে কিছু প্রধান টিপস:
- init() মেথডে ডাটাবেস কানেকশন বা সার্ভিস ইন্টিগ্রেশন প্রক্রিয়া করা উচিত।
- service() মেথডে রিকোয়েস্ট প্রক্রিয়াকরণ এবং রেসপন্স পাঠানো উচিত, এবং যতটা সম্ভব কোড অপটিমাইজ করতে হবে।
- destroy() মেথডে সব রিসোর্স বন্ধ করে দেওয়া উচিত যাতে অ্যাপ্লিকেশনের মেমরি ফাঁকা থাকে।
সার্ভলেট লাইফসাইকেল চিত্র
+----------------+ +--------------------+ +------------------+
| init() |----->| service() |----->| destroy() |
| (Initialization) | (Request Processing) | (Cleanup) |
+----------------+ +--------------------+ +------------------+
সারাংশ
Servlet Lifecycle হল সার্ভলেটের তিনটি গুরুত্বপূর্ণ ধাপ:
- init(): প্রথমবার সার্ভলেট লোড হওয়ার সময় কল হয় এবং সার্ভলেটের ইনিশিয়াল কনফিগারেশন সেটআপ করে।
- service(): প্রতি HTTP রিকোয়েস্টে এটি কল হয় এবং রিকোয়েস্ট প্রসেসিং এবং রেসপন্স তৈরি করে।
- destroy(): সার্ভলেটটি ধ্বংস হওয়ার আগে এটি কল হয় এবং রিসোর্স পরিষ্কার করা হয়।
এই ধাপগুলো সঠিকভাবে কাজ করলে সার্ভলেটের কার্যক্রম নিখুঁতভাবে চলতে পারে এবং অ্যাপ্লিকেশনটি আরো দক্ষতার সাথে কাজ করবে।
Read more