EJB (Enterprise JavaBeans) হলো Java EE (Enterprise Edition) বা বর্তমানে Jakarta EE প্ল্যাটফর্মের একটি গুরুত্বপূর্ণ অংশ, যা মূলত সার্ভার-সাইড ব্যবসায়িক লজিক (business logic) বাস্তবায়ন করতে ব্যবহৃত হয়। EJB-এর জীবনচক্র (lifecycle) একটি নির্দিষ্ট প্রক্রিয়া অনুসরণ করে, যা EJB Bean-এর বিভিন্ন স্টেট এবং তার ইন্টারঅ্যাকশন পরিচালনা করে।
EJB-এর lifecycle দুটি প্রধান অংশে ভাগ করা যেতে পারে:
- Stateless Session Beans Lifecycle
- Stateful Session Beans Lifecycle
- Message-Driven Beans Lifecycle (MDB)
তবে এখানে আমরা মূলত Session Beans (Stateless এবং Stateful) এবং তাদের জীবন্তচক্র নিয়ে আলোচনা করব।
EJB Bean Lifecycle:
1. Stateless Session Beans Lifecycle:
Stateless Session Beans হল সেই EJB Beans যা ক্লায়েন্টের অবস্থা (state) সংরক্ষণ করে না। এর lifecycle বেশ সহজ এবং এর মধ্যে কোন স্টেটফুল তথ্য বজায় রাখা হয় না। প্রতিটি ক্লায়েন্টের জন্য stateless session bean নতুনভাবে তৈরি হয় এবং পরবর্তীতে ক্লায়েন্টের অনুরোধ শেষে ধ্বংস হয়ে যায়।
Stateless Session Beans Lifecycle:
- Create: EJB container যখন একটি Stateless Session Bean তৈরি করে, তখন এটি EJB container দ্বারা একটি proxy object রিটার্ন করে।
- Invoke: এরপর ক্লায়েন্ট থেকে যখনই কোনো মেথড কল করা হয়, তখন Stateless Bean-এর মেথডগুলো কল করা হয়। একাধিক ক্লায়েন্ট একই অবজেক্ট ব্যবহার করতে পারে।
- Destroy: যখন Stateless Session Bean এর সাথে আর কোনো ক্লায়েন্ট যোগাযোগ করে না, তখন EJB container সেই অবজেক্টটি ধ্বংস করে।
Stateless Session Bean এর উদাহরণ:
@Stateless
public class CalculatorBean implements Calculator {
@Override
public int add(int a, int b) {
return a + b;
}
}
এখানে @Stateless অ্যানোটেশন EJB container কে জানায় যে এটি একটি Stateless Session Bean। এখানে EJB container এই bean-কে ক্লায়েন্টের অনুরোধে পুনরায় তৈরি করবে, তবে ক্লায়েন্টের অবস্থা সংরক্ষণ করবে না।
2. Stateful Session Beans Lifecycle:
Stateful Session Beans হল EJB Beans যেগুলি ক্লায়েন্টের অবস্থা সংরক্ষণ করে। একটি Stateful Session Bean তার জীবনচক্রের মধ্যে ক্লায়েন্টের অবস্থা সংরক্ষণ করতে পারে এবং পরবর্তীতে সেই অবস্থা পুনরুদ্ধার করতে পারে।
Stateful Session Beans Lifecycle:
- Create: যখন EJB container একটি Stateful Session Bean তৈরি করে, তখন এটি একটি অবজেক্ট তৈরি করে এবং ক্লায়েন্টের অবস্থা (state) ধারণ করতে সক্ষম হয়। ক্লায়েন্টের অবস্থা সংরক্ষিত হয়।
- Invoke: এরপর, যখন ক্লায়েন্ট bean এর মেথড কল করে, Stateful Session Bean ক্লায়েন্টের অবস্থা সংরক্ষণ করতে থাকে এবং সেই অবস্থা অনুযায়ী কাজ করে।
- Passivation: যদি EJB container কিছু সময়ের জন্য Stateful Session Bean-কে ব্যবহার না করে, তবে এটি passivate করতে পারে, অর্থাৎ অবস্থা সংরক্ষণ করে, এবং কমপিউটার রিসোর্স সাশ্রয় করার জন্য মেমরি থেকে Bean কেটে রাখতে পারে।
- Activate: যখন আবার ক্লায়েন্টের কাছে ওই Bean প্রয়োজন হয়, তখন EJB container Stateful Session Bean-কে পুনরায় activate করে এবং সংরক্ষিত অবস্থা পুনরুদ্ধার করে।
- Destroy: যখন ক্লায়েন্টের কাজ শেষ হয়ে যায় এবং EJB container দেখতে পায় যে আর কোনো ক্লায়েন্ট এই Bean-টি ব্যবহার করছে না, তখন Bean-টি ধ্বংস হয়ে যায়।
Stateful Session Bean এর উদাহরণ:
@Stateful
public class ShoppingCartBean implements ShoppingCart {
private List<Item> items = new ArrayList<>();
@Override
public void addItem(Item item) {
items.add(item);
}
@Override
public List<Item> getItems() {
return items;
}
@Override
public void removeItem(Item item) {
items.remove(item);
}
}
এখানে @Stateful অ্যানোটেশনটি EJB container কে জানায় যে এটি একটি Stateful Session Bean, যা ক্লায়েন্টের অবস্থা সংরক্ষণ করবে (যেমন items তালিকা)।
3. Message-Driven Beans (MDB) Lifecycle:
Message-Driven Beans (MDB) EJB এর আরেক ধরনের bean, যা asynchronous messaging পরিচালনা করতে ব্যবহৃত হয়। JMS (Java Message Service) বা অন্যান্য মেসেজিং প্রোটোকল ব্যবহৃত হয়ে এই Beans মেসেজ গ্রহণ ও প্রক্রিয়া করে।
MDB Lifecycle:
- Create: MDB একটি message listener হিসেবে কাজ করে এবং এটি EJB container দ্বারা তৈরি হয়। এটি মেসেজ সার্ভিসের সাথে সংযুক্ত থাকে এবং মেসেজ গ্রহণের জন্য প্রস্তুত থাকে।
- Message Reception: ক্লায়েন্ট যখন একটি মেসেজ পাঠায়, MDB সেই মেসেজ গ্রহণ করে এবং নির্ধারিত লজিক প্রক্রিয়া শুরু করে।
- Destroy: MDB এর lifecycle মেসেজ সমাপ্তির পর শেষ হয়ে যায় এবং EJB container এর মাধ্যমে ধ্বংস করা হয়।
MDB এর উদাহরণ:
@MessageDriven
public class OrderMessageBean implements MessageListener {
public void onMessage(Message message) {
// Process the message here
}
}
এখানে @MessageDriven অ্যানোটেশনটি EJB container কে জানায় যে এটি একটি Message-Driven Bean এবং এটি মেসেজ গ্রহণ ও প্রক্রিয়া করবে।
EJB Bean Lifecycle - সারাংশ:
| EJB Type | Lifecycle Stages | State Management |
|---|---|---|
| Stateless Session Beans | 1. Create (EJB container creates a proxy object) 2. Invoke (Client invokes methods) 3. Destroy (Bean is destroyed after the client finishes work) | Does not store state |
| Stateful Session Beans | 1. Create (EJB container creates the bean and stores client state) 2. Invoke (Client invokes methods) 3. Passivate (Bean’s state is stored) 4. Activate (Bean is activated and state restored) 5. Destroy (Bean is destroyed when no longer needed) | Stores client state |
| Message-Driven Beans | 1. Create (Bean is created as a listener) 2. Message Reception (Bean processes the message) 3. Destroy (Bean is destroyed after message processing) | No state (Processes asynchronous messages) |
সারাংশ:
EJB Bean Lifecycle হল EJB Beans-এর মধ্যে create, invoke, passivate, activate, এবং destroy স্টেজের সমন্বয়, যা EJB container দ্বারা পরিচালিত হয়। Stateless Session Beans ক্লায়েন্টের অবস্থা সংরক্ষণ করে না এবং অধিক পারফরম্যান্স দেয়, যেখানে Stateful Session Beans ক্লায়েন্টের অবস্থা সংরক্ষণ করে এবং দীর্ঘকাল ধরে অবস্থান করে। Message-Driven Beans (MDB) মেসেজ প্রক্রিয়াকরণের জন্য ব্যবহৃত হয়। EJB Beans-এর জীবনচক্র তাদের ব্যবহারের ক্ষেত্রে গুরুত্বপূর্ণ, কারণ এটি তাদের ট্রানজ্যাকশন ম্যানেজমেন্ট, নিরাপত্তা এবং পারফরম্যান্স উন্নত করে।
Read more