EJB (Enterprise JavaBeans) এর মাধ্যমে Exception Mapping এবং Rollback Handling একটি গুরুত্বপূর্ণ ভূমিকা পালন করে। এদের সাহায্যে, EJB কন্টেইনার কাজের মধ্যে সম্ভাব্য ত্রুটি (exception) সনাক্ত এবং পরিচালনা করতে সক্ষম হয়। এর ফলে অ্যাপ্লিকেশনটি আরও স্থিতিশীল এবং নির্ভরযোগ্য হয়।
Exception Mapping এবং Rollback Handling EJB এর সঠিক কার্যকারিতা এবং ডেটাবেস ট্রানজেকশন প্রক্রিয়া নিশ্চিত করতে সহায়ক। এখানে Exception Mapping এবং Rollback Handling সম্পর্কে বিস্তারিত আলোচনা করা হলো।
1. Exception Mapping in EJB
Exception Mapping একটি প্রক্রিয়া যা EJB এর মধ্যে ঘটে যখন কোনো একটি Exception (ত্রুটি) কাস্টমাইজডভাবে পরিচালনা করা হয়। EJB কন্টেইনার স্বয়ংক্রিয়ভাবে EJBException তৈরি করে, কিন্তু আপনি সেই Exception গুলি ম্যানেজ করতে পারেন এবং আপনার প্রয়োজনে custom exceptions তৈরি করতে পারেন।
Exception Mapping এর উদ্দেশ্য:
- EJB তে বিভিন্ন ধরনের application-specific exception তৈরি করা এবং সেগুলির সঠিকভাবে ম্যাপিং করা।
- নির্দিষ্ট exception গুলি পুনঃনির্দেশ (rethrow) করা বা ট্রানজ্যাকশন রোলব্যাক করতে সাহায্য করা।
- Application এর নির্দিষ্ট লজিক অনুযায়ী exception handling করা।
Exception Mapping উদাহরণ:
একটি সাধারণ custom exception তৈরি করা এবং তা @TransactionAttribute এর মাধ্যমে exception mapping করা।
Custom Exception তৈরি করুন:
public class InsufficientFundsException extends Exception { public InsufficientFundsException(String message) { super(message); } }EJB ক্লাসে Exception Mapping:
import javax.ejb.Stateless; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; @Stateless public class BankService { @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public void transferFunds(int fromAccount, int toAccount, double amount) throws InsufficientFundsException { // Assume the method checks balance of fromAccount if (amount > 1000) { throw new InsufficientFundsException("Insufficient funds to complete the transfer."); } // Perform transfer logic here... } }Exception Mapping Configuration in
ejb-jar.xml:যদি আপনি exception গুলির জন্য explicit mapping চান, আপনি
ejb-jar.xmlএ exception mapping কনফিগার করতে পারেন। উদাহরণস্বরূপ:<enterprise-beans> <session> <ejb-name>BankService</ejb-name> <exception> <exception-type>com.example.InsufficientFundsException</exception-type> <rollback>true</rollback> </exception> </session> </enterprise-beans>
Explanation:
@TransactionAttribute: ট্যাগটি ব্যবহার করা হয় যাতে ট্রানজ্যাকশন নিয়ন্ত্রণ করা যায় (এখানে REQUIRES_NEW ব্যবহৃত হয়েছে, যার মানে হচ্ছে নতুন একটি ট্রানজ্যাকশন শুরু করা হবে)।- @Rollback: Exception-র ভিত্তিতে ট্রানজ্যাকশন রোলব্যাক করার জন্য ব্যবহৃত হয়।
2. Rollback Handling in EJB
Rollback Handling হল একটি প্রক্রিয়া যার মাধ্যমে একটি ট্রানজ্যাকশন সফল না হলে বা কোনো exception ঘটলে সেই ট্রানজ্যাকশনটি রোলব্যাক (cancel) করা হয়। EJB এ রোলব্যাক ব্যবস্থাপনা সহজে করা যায়, এবং এটি নিশ্চিত করে যে, যদি কোনো ত্রুটি ঘটে তবে ডেটাবেস বা ট্রানজেকশন স্টেট অপরিবর্তিত থাকে।
Rollback Handling এর উদ্দেশ্য:
- যদি কোনো exception ঘটে এবং ট্রানজ্যাকশন সফল না হয়, তাহলে সিস্টেমে কোনো অস্থির বা অসম্পূর্ণ ডেটা রেখে যেতে না হয়।
- সিস্টেমের স্থিতিশীলতা নিশ্চিত করা এবং ডেটার সঠিকতা বজায় রাখা।
- প্রোগ্রাম্যাটিক বা ডিক্লারেটিভভাবে রোলব্যাক পরিচালনা করা।
Rollback Handling উদাহরণ:
Declarative Rollback (ডিক্লারেটিভ রোলব্যাক):
ডিক্লারেটিভ রোলব্যাক করার জন্য, আপনি @TransactionAttribute এবং @TransactionRolledback ব্যবহার করতে পারেন।
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
@Stateless
public class AccountService {
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void transferFunds(int fromAccount, int toAccount, double amount) throws InsufficientFundsException {
if (amount > 1000) {
throw new InsufficientFundsException("Not enough funds!");
}
// Business logic for fund transfer
}
}
Programmatic Rollback (প্রোগ্রাম্যাটিক রোলব্যাক):
এছাড়া, আপনি programmatic rollback প্রয়োগ করতে পারেন, যেখানে আপনি কোডের মাধ্যমে রোলব্যাক পরিচালনা করেন।
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.SessionContext;
@Stateless
public class AccountService {
@Resource
private SessionContext context;
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public void transferFunds(int fromAccount, int toAccount, double amount) throws InsufficientFundsException {
if (amount > 1000) {
context.setRollbackOnly(); // Marks the transaction for rollback
throw new InsufficientFundsException("Not enough funds!");
}
// Business logic for fund transfer
}
}
Explanation:
context.setRollbackOnly(): যখন কোনো সমস্যা ঘটে এবং আপনি নিশ্চিত যে ট্রানজ্যাকশন রোলব্যাক করতে হবে, তখন এই মেথড ব্যবহার করা হয়। এটি সিস্টেমকে জানিয়ে দেয় যে, বর্তমান ট্রানজ্যাকশনটি রোলব্যাক করা উচিত।
Exception Handling and Rollback Mechanism Summary
| Feature | Declarative Security | Programmatic Security |
|---|---|---|
| Exception Handling | Exception mapping through ejb-jar.xml, automatic rollback for exceptions. | Exception handling through code (@Timeout, @Schedule), setRollbackOnly for explicit rollback. |
| Rollback Handling | @TransactionAttribute, automatic rollback for system exceptions or custom exceptions marked for rollback. | context.setRollbackOnly() for manual rollback in business logic. |
| Usage | Use when you want container-managed security (easier to configure). | Use when you need fine-grained control over transaction behavior. |
সারাংশ
EJB এর Exception Mapping এবং Rollback Handling ব্যবহার করার মাধ্যমে আপনি অ্যাপ্লিকেশনটির স্থিতিশীলতা এবং নির্ভরযোগ্যতা উন্নত করতে পারেন। Declarative Security এবং Programmatic Security দুটি পদ্ধতির মধ্যে ব্যবহৃত হলে আপনি সহজেই exception handling এবং rollback পরিচালনা করতে পারবেন। Exception mapping ও rollback handling ব্যবহারের মাধ্যমে, আপনি যদি কোনো ত্রুটি ঘটে তবে আপনার ডেটাবেস বা ট্রানজেকশন অপারেশনগুলো সঠিকভাবে পরিচালনা করতে পারবেন, যাতে সিস্টেমে কোনো অস্থিরতা না হয়।
Read more