Stateful Session Bean এর কাজ এবং উদাহরণ

Session Beans এর ধারণা - ইজেবি (EJB) - Java Technologies

285

Stateful Session Bean (SFSB) হল EJB (Enterprise JavaBeans) এর একটি ধরনের কম্পোনেন্ট যা client-specific state সংরক্ষণ করে। এটি EJB Container এর মধ্যে সংরক্ষণ করা হয় এবং প্রতিটি ক্লায়েন্টের জন্য একটি পৃথক অবজেক্ট তৈরি হয়, যার মধ্যে ক্লায়েন্টের স্টেট সংরক্ষিত থাকে। Stateful Session Bean সাধারনত client session বা stateful প্যারামিটার/ডাটা সংরক্ষণ করার জন্য ব্যবহৃত হয়।

১. Stateful Session Bean এর কাজ

Stateful Session Bean ক্লায়েন্টের স্টেট সংরক্ষণ করে এবং ক্লায়েন্ট যখন বিভিন্ন মেথড কল করে, তখন সে তার পূর্ববর্তী স্টেটের তথ্য ব্যবহার করে। এর ফলে, প্রতিটি ক্লায়েন্টের জন্য আলাদা অবজেক্ট এবং স্টেট তৈরি হয়।

Stateful Session Bean এর প্রধান বৈশিষ্ট্যগুলো হলো:

  1. State retention: ক্লায়েন্টের মধ্যে স্টেট রাখে। অর্থাৎ, যদি একাধিক মেথড কল করা হয়, তবে তাদের মধ্যে ক্লায়েন্টের পূর্ববর্তী ডেটা সংরক্ষিত থাকবে।
  2. Lifecycle: Stateful Session Bean এর জীবনচক্র ক্লায়েন্টের সাথে সম্পর্কিত থাকে। অর্থাৎ, যখন ক্লায়েন্ট তার কাজ শেষ করে, তখন Bean এর অবজেক্টটি ধ্বংস হয়ে যাবে।
  3. Client-Specific: ক্লায়েন্টের জন্য পৃথক অবজেক্ট তৈরি হয়, এবং এই অবজেক্টটি ক্লায়েন্টের ডেটা এবং স্টেট ধরে রাখে।

২. Stateful Session Bean উদাহরণ

Stateful Session Bean তৈরি এবং ব্যবহার করার জন্য প্রথমে একটি Stateful Session Bean Interface এবং তারপর Stateful Session Bean Class তৈরি করতে হবে।

২.১ Stateful Session Bean Interface (Remote or Local Interface)

Stateful Session Bean এর জন্য প্রথমে একটি ইন্টারফেস তৈরি করতে হয়, যা ক্লায়েন্টকে মেথডগুলির অ্যাক্সেস দেয়।

CounterBeanRemote.java:

import javax.ejb.Remote;

@Remote
public interface CounterBeanRemote {
    public int incrementCounter();
    public int getCounter();
}

এখানে, আমরা একটি incrementCounter() মেথড এবং একটি getCounter() মেথড তৈরি করেছি যা কাউন্টার মান ইনক্রিমেন্ট এবং রিটার্ন করার কাজ করবে।

২.২ Stateful Session Bean Implementation

এবার আমাদের CounterBean নামক Stateful Session Bean ক্লাস তৈরি করতে হবে যা এই ইন্টারফেসটিকে ইমপ্লিমেন্ট করবে এবং স্টেট ধারণ করবে।

CounterBean.java:

import javax.ejb.Stateful;

@Stateful
public class CounterBean implements CounterBeanRemote {
    private int counter = 0;

    @Override
    public int incrementCounter() {
        counter++;
        return counter;
    }

    @Override
    public int getCounter() {
        return counter;
    }
}

এখানে, CounterBean ক্লাসটি একটি Stateful Session Bean হিসেবে ডিফাইন করা হয়েছে এবং @Stateful অ্যানোটেশন ব্যবহার করা হয়েছে। এই ক্লাসের মধ্যে একটি counter ভ্যারিয়েবল রয়েছে যা স্টেট সংরক্ষণ করে।

২.৩ Stateful Session Bean Client

Stateful Session Bean কে কল করার জন্য একটি ক্লায়েন্ট ক্লাস তৈরি করতে হবে। ক্লায়েন্ট মেথড কল করার সময়, এটি সেই Stateful Bean এর মধ্যে স্টেট সংরক্ষণ করবে এবং পরবর্তী কলের সময় সেই স্টেট রিটার্ন করবে।

EJBClient.java:

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class EJBClient {
    public static void main(String[] args) throws NamingException {
        Context context = new InitialContext();
        CounterBeanRemote counterBean = (CounterBeanRemote) context.lookup("java:global/ejbapp/CounterBean!com.example.CounterBeanRemote");

        // First increment
        System.out.println("Counter: " + counterBean.incrementCounter());  // Counter: 1

        // Second increment
        System.out.println("Counter: " + counterBean.incrementCounter());  // Counter: 2

        // Get current counter value
        System.out.println("Current Counter: " + counterBean.getCounter());  // Current Counter: 2
    }
}

এখানে, EJBClient ক্লাসটি Stateful Session Bean কে লুকআপ করে এবং incrementCounter() মেথড কল করে কাউন্টার ভ্যালু ইনক্রিমেন্ট করে।

৩. Stateful Session Bean Life Cycle

Stateful Session Bean এর জীবনচক্র ক্লায়েন্টের সাথে সম্পর্কিত থাকে। এর অর্থ, যখন ক্লায়েন্ট একটি মেথড কল করবে, তখন EJB Container ওই Bean এর জন্য একটি অবজেক্ট তৈরি করবে এবং ক্লায়েন্টের কাজ শেষ হলে EJB Container সেই Bean অবজেক্টটিকে ধ্বংস করবে।

  • Create: Bean অবজেক্ট তৈরি করা হয় যখন ক্লায়েন্ট প্রথমবার Bean ব্যবহার করতে চায়।
  • PostConstruct: Bean অবজেক্ট তৈরি হওয়ার পর, যদি কোনো কনস্ট্রাক্টর বা সেটআপ কোড থাকে, তাহলে এটি চালানো হয়।
  • Business Method Invocation: ক্লায়েন্ট যখন মেথড কল করে, তখন এই মেথডের মাধ্যমে Bean এর স্টেট পরিবর্তন হতে থাকে।
  • Remove: যখন ক্লায়েন্ট কাজ শেষ করে, Bean অবজেক্টটি EJB Container থেকে সরিয়ে ফেলা হয়।

৪. Stateful Session Bean এর সুবিধা

  • Client-specific State: Stateful Session Bean ক্লায়েন্টের জন্য একটি নির্দিষ্ট অবজেক্ট তৈরি করে যা ক্লায়েন্টের স্টেট ধরে রাখে।
  • State Preservation: Bean ক্লায়েন্টের মেথড কলের মধ্যে স্টেট সংরক্ষণ করতে পারে, যা পরবর্তী কলের সময় ব্যবহার করা হয়।
  • Simplified Development: Stateful Beans ডেভেলপারদের ক্লায়েন্টের স্টেট পরিচালনার জন্য উপযোগী সেবা প্রদান করে, যাতে অনেক কাঠিন্য কমে যায়।

৫. Stateful Session Bean এর সীমাবদ্ধতা

  • Resource Intensive: Stateful Session Beans অনেক বেশি রিসোর্স ব্যবহার করতে পারে কারণ এরা ক্লায়েন্টের স্টেট সংরক্ষণ করে।
  • Scalability Issues: যেহেতু স্টেটful Beans ক্লায়েন্টের স্টেট সংরক্ষণ করে, এটি মেমরি ব্যবহার করে এবং একটি নির্দিষ্ট ক্লায়েন্টের জন্য হোস্ট সার্ভারে স্থায়ী হতে পারে, যা স্কেলেবিলিটি সমস্যা তৈরি করতে পারে।
  • Garbage Collection: Stateful Session Bean গুলি ক্লায়েন্টের সাথে সম্পর্কিত থাকায়, সেগুলি ক্লায়েন্টের ব্যবহারের পর সঠিকভাবে ধ্বংস হতে হবে (garbage collection), অন্যথায় এটি মেমরি লিক তৈরি করতে পারে।

সারাংশ

Stateful Session Bean একটি EJB কম্পোনেন্ট যা ক্লায়েন্টের জন্য স্টেট সংরক্ষণ করে এবং সেই স্টেটের উপর ভিত্তি করে মেথড কল করতে সাহায্য করে। Stateful Session Beans সাধারণত দীর্ঘ-স্থায়ী সেশন বা ক্লায়েন্ট ভিত্তিক স্টেট পরিচালনা করতে ব্যবহৃত হয়। Eclipse এ EJB Container এর মধ্যে Stateful Session Bean তৈরি এবং ডিপ্লয় করতে পারলে, আপনি ক্লায়েন্টের স্টেট হ্যান্ডলিং সহজ এবং কার্যকরভাবে করতে পারবেন।

Content added By
Promotion

Are you sure to start over?

Loading...