EJB তে Exception Handling এর ধারণা

Exception Handling এবং EJB - ইজেবি (EJB) - Java Technologies

324

EJB (Enterprise JavaBeans) একটি Java EE (Jakarta EE) ভিত্তিক টেকনোলজি যা ক্লায়েন্ট-সার্ভার অ্যাপ্লিকেশন ডেভেলপমেন্টের জন্য ব্যবহৃত হয়। EJB এর মাধ্যমে আপনি সিকিউরিটি, ট্রানজেকশন ম্যানেজমেন্ট এবং কনকারেন্সি ম্যানেজমেন্ট সহজেই পরিচালনা করতে পারেন। তবে, যখন আপনি একটি অ্যাপ্লিকেশন তৈরি করেন, তখন সঠিকভাবে Exception Handling করার গুরুত্ব অপরিসীম, কারণ এটি অ্যাপ্লিকেশনের স্থিতিশীলতা এবং নির্ভরযোগ্যতা নিশ্চিত করতে সাহায্য করে।

EJB তে Exception Handling দুটি ধরনের হতে পারে:

  1. Application Exception (অ্যাপ্লিকেশন এক্সেপশন): বিশেষত, ব্যবসায়িক লজিক বা প্রোগ্রামের জন্য নির্ধারিত এক্সেপশন।
  2. System Exception (সিস্টেম এক্সেপশন): JEE কন্টেইনার দ্বারা সৃষ্ট এক্সেপশন যেমন, ট্রানজেকশন সংক্রান্ত বা সিস্টেম ইরর।

এখানে, আমরা EJB তে Exception Handling সম্পর্কে বিস্তারিত আলোচনা করব এবং বিভিন্ন ধরনের এক্সেপশন কিভাবে হ্যান্ডেল করতে হয় তা দেখাবো।


1. EJB Exception Handling:

EJB তে exception handling দুই ধরনের এক্সেপশন কভার করে:

  • Application Exceptions: এটি ক্লায়েন্ট বা ডেভেলপার দ্বারা তৈরি করা এক্সেপশন যা সাধারণত ব্যবসায়িক বা ডোমেইন লজিকের জন্য ব্যবহৃত হয়।
  • System Exceptions: এটি JEE কন্টেইনার দ্বারা তৈরি করা এক্সেপশন, যেমন কন্টেইনার-সংশ্লিষ্ট ত্রুটি (ট্রানজেকশন ইরর, সিকিউরিটি এক্সেপশন ইত্যাদি)।

System Exception Handling:

System Exception গুলি runtime exception হিসেবে দেখা যায়। EJB কন্টেইনার স্বয়ংক্রিয়ভাবে System Exception গুলিকে রোলব্যাক করে।

যেমন:

  • RemoteException
  • EJBException
  • TransactionRolledbackException
  • IllegalStateException

Application Exception Handling:

Application Exception গুলি checked exceptions হিসেবে দেখা যায় এবং এগুলি কাস্টম ক্লাসের মাধ্যমে ডিফাইন করা যায়। এই এক্সেপশনগুলিকে ডেভেলপার নিজেই হ্যান্ডেল করতে পারে।

যেমন:

  • BusinessException
  • ValidationException

2. EJB তে Exception Handling এর সাধারণ ধারণা:

EJB তে এক্সেপশন হ্যান্ডলিং সাধারণত দুইটি কৌশল ব্যবহৃত হয়:

Declarative Exception Handling:

EJB কন্টেইনারের declarative exception handling ব্যবস্থায় @TransactionManagement এবং @TransactionAttribute অ্যানোটেশন ব্যবহার করে এক্সেপশন হ্যান্ডলিং করা যায়। এতে কোন কোড লেখা ছাড়াই, শুধুমাত্র কনফিগারেশন দ্বারা এক্সেপশন ম্যানেজ করা হয়।

Programmatic Exception Handling:

এটি EJB তে কোড লিখে try-catch blocks ব্যবহার করে এক্সেপশন ম্যানেজ করার প্রক্রিয়া। এখানে ডেভেলপার নিজেই এক্সেপশন হ্যান্ডলিং পরিচালনা করেন।


3. EJB Exception Handling: Programmatic Approach

এখানে Programmatic Exception Handling এর একটি উদাহরণ দেওয়া হলো যেখানে try-catch ব্লক ব্যবহার করে কাস্টম exception হ্যান্ডলিং করা হয়েছে।

Step 1: Application Exception (Business Exception)

package com.example.ejb;

public class BusinessException extends Exception {
    public BusinessException(String message) {
        super(message);
    }
}

এখানে BusinessException একটি কাস্টম exception ক্লাস তৈরি করা হয়েছে যা ব্যবসায়িক লজিকের ত্রুটি চিহ্নিত করবে।

Step 2: EJB Bean (Stateful Session Bean)

package com.example.ejb;

import javax.ejb.Stateful;
import javax.ejb.EJBException;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

@Stateful
public class ShoppingCartBean {

    private int itemCount = 0;

    // Method to add an item to the shopping cart
    public void addItem(int quantity) throws BusinessException {
        if (quantity <= 0) {
            throw new BusinessException("Invalid quantity, must be greater than zero.");
        }
        itemCount += quantity;
    }

    // Method to get the current item count
    public int getItemCount() {
        return itemCount;
    }
    
    // Example of catching system exception and throwing application exception
    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void checkout() {
        try {
            // Some logic that could cause an exception
            if (itemCount == 0) {
                throw new EJBException("Cart is empty, cannot checkout.");
            }
        } catch (EJBException ex) {
            throw new BusinessException("Checkout failed: " + ex.getMessage());
        }
    }
}

এখানে, addItem() মেথডে যদি কোনো ভুল পরিমাণ দেওয়া হয়, তাহলে একটি BusinessException ছোঁড়া হবে। এছাড়া, checkout() মেথডে EJBException হ্যান্ডেল করা হচ্ছে এবং তার ভিত্তিতে একটি কাস্টম BusinessException ছোঁড়া হচ্ছে।

Step 3: Client Code (EJB Client)

package com.example.client;

import javax.naming.Context;
import javax.naming.InitialContext;
import com.example.ejb.ShoppingCartBean;
import com.example.ejb.BusinessException;

public class ShoppingCartClient {

    public static void main(String[] args) {
        try {
            // JNDI Lookup to access the ShoppingCartBean
            Context context = new InitialContext();
            ShoppingCartBean shoppingCart = (ShoppingCartBean) context.lookup("java:global/myapp/ShoppingCartBean");

            // Add item to cart
            shoppingCart.addItem(5);  // Valid case

            // Add invalid item (throws exception)
            shoppingCart.addItem(-1);  // Invalid quantity

        } catch (BusinessException e) {
            e.printStackTrace();  // Handle business exception
        } catch (Exception e) {
            e.printStackTrace();  // Handle other exceptions
        }
    }
}

এখানে, ShoppingCartClient ক্লায়েন্ট অ্যাপ্লিকেশন addItem মেথডটি কল করছে এবং যদি কোনো BusinessException হয়, তাহলে সেটা catch করা হচ্ছে এবং যথাযথভাবে হ্যান্ডল করা হচ্ছে।


4. EJB Exception Handling: Declarative Approach

EJB তে Declarative Exception Handling ব্যবহারের জন্য @TransactionAttribute অ্যানোটেশন এবং @TransactionManagement অ্যানোটেশন ব্যবহার করা হয়, যা ট্রানজেকশন সাপোর্ট করে এবং প্রোগ্রামিং লেভেলে এক্সেপশন ম্যানেজমেন্টের প্রক্রিয়াটি সহজ করে।

Declarative Exception Handling Example:

package com.example.ejb;

import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

@Stateless
public class OrderProcessingBean {

    @TransactionAttribute(TransactionAttributeType.REQUIRED)
    public void processOrder(Order order) throws BusinessException {
        if (order == null || order.getItems().isEmpty()) {
            throw new BusinessException("Order is invalid: no items.");
        }
        // Further processing...
    }
}

এখানে, @TransactionAttribute(TransactionAttributeType.REQUIRED) অ্যানোটেশনটি ব্যবহার করা হয়েছে যাতে ট্রানজেকশনটি শুধুমাত্র প্রয়োজনীয় যখন থাকে তখনই শুরু হয় এবং যদি কোনো এক্সেপশন হয়, তবে ট্রানজেকশন রোলব্যাক হবে।


EJB Exception Handling এর সুবিধা:

  1. Declarative Exception Handling ডেভেলপারকে কোডের মধ্যে এক্সেপশন ম্যানেজমেন্ট করতে সাহায্য করে না, বরং এটি কনফিগারেশন এবং অ্যানোটেশন দ্বারা সহজভাবে করা হয়।
  2. Programmatic Exception Handling ব্যবহার করে ডেভেলপার নিজে বিভিন্ন এক্সেপশন ট্রিগার এবং হ্যান্ডল করতে পারেন, যা বেশি কাস্টমাইজড এবং নিয়ন্ত্রিত।
  3. EJB কন্টেইনার স্বয়ংক্রিয়ভাবে System Exceptions হ্যান্ডল করে এবং Application Exceptions প্রোগ্রাম্যাটিকভাবে পরিচালিত হয়।

সারাংশ:

EJB Exception Handling হল এক্সেপশন ম্যানেজমেন্টের জন্য একটি শক্তিশালী প্রক্রিয়া, যা Declarative এবং Programmatic দুটি পদ্ধতিতে করা যায়। Declarative পদ্ধতিতে অ্যানোটেশন বা কনফিগারেশন দ্বারা এক্সেপশন ম্যানেজমেন্ট করা হয়, যা কোডকে সহজ এবং পরিষ্কার রাখে। অন্যদিকে, Programmatic পদ্ধতিতে ডেভেলপার নিজে কোড লিখে এক্সেপশন ম্যানেজমেন্ট করতে পারে, যা অধিক কাস্টমাইজেশন এবং নিয়ন্ত্রণ প্রদান করে।

Content added By
Promotion

Are you sure to start over?

Loading...