Enterprise JavaBeans (EJB) একটি Java API যা Java EE (Enterprise Edition) প্ল্যাটফর্মে এন্টারপ্রাইজ-স্কেল অ্যাপ্লিকেশন তৈরি করতে ব্যবহৃত হয়। EJB সাধারণত সার্ভার-সাইড কম্পোনেন্ট হিসেবে কাজ করে এবং এটি ডিজাইন করা হয়েছে যাতে মডুলার, স্কেলেবল, এবং সুরক্ষিত এন্টারপ্রাইজ অ্যাপ্লিকেশন নির্মাণ সহজ হয়।
EJB এর প্রধান বৈশিষ্ট্যগুলি সম্পর্কে বিস্তারিত আলোচনা করা হলো, এবং এর সাথে উদাহরণও প্রদান করা হয়েছে।
EJB এর প্রধান বৈশিষ্ট্য
ডিস্ট্রিবিউটেড এবং রিমোট অ্যাক্সেস
- EJB কম্পোনেন্টগুলি রিমোট এবং লোকাল উভয়ভাবে অ্যাক্সেসযোগ্য হতে পারে। এটি দূরবর্তী ক্লায়েন্ট এবং সার্ভার মধ্যে যোগাযোগ সহজ করে।
- EJB কন্টেইনারে ডিপ্লয়ড হওয়া এই কম্পোনেন্টগুলিকে সহজে রিমোট (বহিরাগত) অ্যাক্সেস করা যায়।
উদাহরণ:
@Remote public interface AccountService { void transferFunds(int fromAccount, int toAccount, double amount); }ট্রানজ্যাকশন ম্যানেজমেন্ট
- EJB অটোমেটিক ট্রানজ্যাকশন ম্যানেজমেন্ট প্রদান করে। EJB কন্টেইনার ট্রানজ্যাকশনগুলির পরিচালনার দায়িত্বে থাকে, অর্থাৎ এতে কোড লেখার প্রয়োজন নেই।
- EJB-এ বিভিন্ন ধরনের ট্রানজ্যাকশন সমর্থিত থাকে যেমন CMT (Container-Managed Transactions) এবং BMT (Bean-Managed Transactions)।
উদাহরণ:
@Stateless public class TransferService implements TransferServiceRemote { @Resource private UserTransaction userTransaction; public void transferFunds(int fromAccount, int toAccount, double amount) throws Exception { try { userTransaction.begin(); // Business logic for transfer userTransaction.commit(); } catch (Exception e) { userTransaction.rollback(); throw e; } } }সিকিউরিটি
- EJB কন্টেইনার সিকিউরিটি সাপোর্ট করে, যার মাধ্যমে আপনি নির্দিষ্ট মেথডগুলির জন্য অ্যাক্সেস কন্ট্রোল সেট করতে পারেন।
- Declarative Security ব্যবহার করে আপনি EJB মেথডের সিকিউরিটি নিয়ন্ত্রণ করতে পারেন।
উদাহরণ:
@RolesAllowed({"ADMIN", "USER"}) public void processOrder() { // Order processing logic }- লজিক্যাল মডুলারিটি এবং ডিপ্লয়মেন্ট
- EJB কম্পোনেন্টগুলি আর্কিটেকচারে লজিক্যাল মডুলারিটি যোগ করে এবং বিভিন্ন সেবা যেমন টিআরএনজ্যাকশন, সিকিউরিটি, কনকারেন্সি, এবং রিমোট এক্সিকিউশন পরিচালনা করে।
- EJB কম্পোনেন্টগুলি সার্ভার কন্টেইনারে ডিপ্লয় করা হয় এবং এই কন্টেইনারই তাদের কার্যকারিতা সরবরাহ করে।
- পারফরম্যান্স এবং স্কেলেবিলিটি
- EJB কন্টেইনার একটি লোড-ব্যালান্সিং সুবিধা প্রদান করে, যা উচ্চ পারফরম্যান্স এবং স্কেলেবিলিটি নিশ্চিত করে। এটি অ্যাপ্লিকেশনকে আরও দ্রুত এবং বিস্তৃত পরিবেশে পরিচালনা করতে সহায়ক হয়।
পার্সিস্টেন্স সাপোর্ট (JPA)
- EJB এর সাথে JPA (Java Persistence API) ব্যবহার করে ডেটাবেসের সাথে যোগাযোগ এবং ডেটা পদ্ধতির উপর সম্পূর্ণ কন্ট্রোল থাকে। এটি ডেটাবেসের অটোমেটিক পার্সিস্টেন্স এবং কুয়েরি প্রসেসিংকে সহজ করে।
উদাহরণ:
@Stateless public class AccountServiceImpl implements AccountService { @PersistenceContext private EntityManager entityManager; public void createAccount(Account account) { entityManager.persist(account); } }- Concurrency Management
- EJB কন্টেইনার পদ্ধতিগতভাবে কনকারেন্ট এক্সিকিউশনকে সাপোর্ট করে। এটি Concurrency Management প্রদান করে যা একাধিক থ্রেডের একযোগে ব্যবহারের সময় কাজটি সহজ করে।
- Container-managed concurrency (CMC) EJB কন্টেইনারের মাধ্যমে একাধিক ক্লায়েন্টের অ্যাক্সেস কন্ট্রোল করতে সক্ষম।
Stateless এবং Stateful Beans
- EJB দুটি ধরনের কম্পোনেন্টে বিভক্ত হয়:
- Stateless Beans: এগুলি ক্লায়েন্টের মধ্যে স্টেট বা অবস্থান বজায় রাখে না। একাধিক ক্লায়েন্ট এই কম্পোনেন্টটি ব্যবহার করতে পারে।
- Stateful Beans: এগুলি ক্লায়েন্টের সাথে স্টেট সংরক্ষণ করে এবং ক্লায়েন্টের জন্য কাস্টমাইজড তথ্য ধারণ করে।
উদাহরণ:
- Stateless Bean Example:
@Stateless public class OrderService { public void placeOrder(Order order) { // Logic to place an order } }- Stateful Bean Example:
@Stateful public class ShoppingCartBean implements ShoppingCart { private List<Item> items = new ArrayList<>(); public void addItem(Item item) { items.add(item); } public List<Item> getItems() { return items; } }- EJB দুটি ধরনের কম্পোনেন্টে বিভক্ত হয়:
EJB এর প্রকারভেদ
- Stateless EJB:
- Stateless Session Beans সাধারণত বিজনেস লজিক প্রোভাইড করতে ব্যবহৃত হয়, এবং ক্লায়েন্টের কোন স্থিতি বা অবস্থা বজায় রাখে না। এটি পুনঃব্যবহারযোগ্য কম্পোনেন্ট হিসেবে কাজ করে।
- Stateful EJB:
- Stateful Session Beans ক্লায়েন্টের অবস্থা বা স্টেট বজায় রাখে। এটি ক্লায়েন্টের সাথে একে অপরকে সম্পর্কিত থাকে, এবং একাধিক ক্লায়েন্টের জন্য ব্যবহারযোগ্য নয়। যেমন, একজন ব্যবহারকারীর সেশনের সময় একটি শপিং কার্টের তথ্য রাখার ক্ষেত্রে এটি ব্যবহৃত হতে পারে।
- Message-Driven EJB:
- Message-Driven Beans (MDB) asynchronous মেসেজ প্রক্রিয়া করতে ব্যবহৃত হয়, বিশেষত JMS (Java Message Service) এর সাথে। MDB সাধারণত বার্তা সিস্টেম থেকে আসা মেসেজগুলিকে প্রক্রিয়া করতে ব্যবহৃত হয়।
EJB উদাহরণ
Stateful EJB উদাহরণ:
এখানে, একটি সিম্পল ShoppingCartBean যা ক্লায়েন্টের শপিং কার্টের তথ্য রাখে এবং পরিচালনা করে।
import javax.ejb.Stateful;
import java.util.ArrayList;
import java.util.List;
@Stateful
public class ShoppingCartBean implements ShoppingCart {
private List<Item> items = new ArrayList<>();
public void addItem(Item item) {
items.add(item);
}
public List<Item> getItems() {
return items;
}
public double getTotal() {
double total = 0;
for (Item item : items) {
total += item.getPrice();
}
return total;
}
}
Stateless EJB উদাহরণ:
এখানে, একটি সিম্পল OrderService যা অর্ডার তৈরি করার জন্য ব্যবহৃত হয়।
import javax.ejb.Stateless;
@Stateless
public class OrderService {
public void placeOrder(Order order) {
// Order placement logic
}
}
সারাংশ
EJB (Enterprise JavaBeans) একটি শক্তিশালী Java API যা এন্টারপ্রাইজ অ্যাপ্লিকেশনগুলির জন্য কার্যকরী বিজনেস লজিক তৈরি করতে সহায়ক। এর মধ্যে রয়েছে Stateless, Stateful, এবং Message-driven Beans, যা বিভিন্ন পরিস্থিতিতে কাজ করতে সক্ষম। EJB-এর প্রধান বৈশিষ্ট্যগুলির মধ্যে রয়েছে ডিস্ট্রিবিউটেড অ্যাক্সেস, ট্রানজ্যাকশন ম্যানেজমেন্ট, সিকিউরিটি, পারফরম্যান্স এবং স্কেলেবিলিটি ইত্যাদি। EJB ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনগুলোকে আরও স্কেলেবল, সুরক্ষিত এবং উন্নত করতে পারেন, যা এন্টারপ্রাইজ-স্কেল সিস্টেমের জন্য অত্যন্ত উপযোগী।
Read more