EJB Clients এবং Server Components এর মধ্যে সম্পর্ক

EJB এর আর্কিটেকচার - ইজেবি (EJB) - Java Technologies

323

EJB (Enterprise JavaBeans) হল একটি Java EE (Enterprise Edition) প্রযুক্তি, যা ব্যবসায়িক লজিককে সেভ এবং পরিচালনা করার জন্য ব্যবহৃত হয়। EJB Client এবং EJB Server Components এর মধ্যে সম্পর্ক বোঝা অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি বোঝায় কিভাবে ক্লায়েন্ট এবং সার্ভার একে অপরের সাথে যোগাযোগ করে এবং তাদের মধ্যে কী ধরনের সহযোগিতা থাকে।

1. EJB Components Overview

EJB-এর মধ্যে দুটি প্রধান উপাদান থাকে:

  • EJB Server Components: এগুলি হল সেগুলি যা সার্ভারে চলে এবং যা ব্যবসায়িক লজিকের প্রধান অংশ সরবরাহ করে।
  • EJB Clients: এগুলি হল সেগুলি যেগুলি EJB Server Components-এর সাথে যোগাযোগ করে তাদের কার্যকলাপ ব্যবহার করতে। ক্লায়েন্ট সাধারণত একটি ভিন্ন অ্যাপ্লিকেশন বা ইউজার ইন্টারফেস হতে পারে।

2. EJB Server Components (EJB Bean)

EJB server components হল সেই জাভা ক্লাস বা কম্পোনেন্ট যা EJB container দ্বারা ব্যবস্থাপিত হয়। এটি ব্যবসায়িক লজিক (business logic) ধারণ করে এবং ক্লায়েন্ট থেকে আগত রিকোয়েস্ট প্রসেস করে। EJB কম্পোনেন্টে সাধারণত তিনটি প্রধান ধরণ থাকে:

  • Session Beans: ব্যবসায়িক লজিকের জন্য ব্যবহৃত হয়। এগুলি আবার দুটি ধরনের হতে পারে:
    • Stateless Session Beans: ক্লায়েন্টের কোনও নির্দিষ্ট অবস্থা (state) রাখে না। প্রতিটি মেথড কল স্বাধীনভাবে সম্পন্ন হয়।
    • Stateful Session Beans: ক্লায়েন্টের অবস্থান রাখে এবং প্রতিটি ক্লায়েন্টের জন্য একটি নির্দিষ্ট অবস্থা সংরক্ষণ করে।
  • Message-Driven Beans (MDB): অ্যাসিনক্রোনাস মেসেজ প্রসেসিংয়ের জন্য ব্যবহৃত হয়।
  • Entity Beans: ডেটাবেসের সাথে ইন্টিগ্রেশন করে ডেটা সংরক্ষণ এবং পুনরুদ্ধার করতে ব্যবহৃত হয় (যদিও JPA(Entity Beans)-এর সাথে Entity Beans পুরোনো হয়ে গেছে)।

3. EJB Clients

EJB Clients হল সেই অ্যাপ্লিকেশন যা EJB server components কে কল করে তাদের কার্যকলাপ ব্যবহার করার জন্য। ক্লায়েন্টটি একটি UI (User Interface), একটি ওয়েব সার্ভিস বা অন্য কোনো অ্যাপ্লিকেশন হতে পারে যা EJB সার্ভারের সাথে যোগাযোগ করে। EJB ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ সাধারণত Remote বা Local interface ব্যবহার করে হয়।

  • Remote Clients: যদি ক্লায়েন্ট এবং সার্ভার আলাদা JVM-এ থাকে, তাহলে এটি remote communication হয়। এই ক্ষেত্রে, EJB কন্টেইনার RMI (Remote Method Invocation) অথবা IIOP (Internet Inter-ORB Protocol) এর মাধ্যমে ক্লায়েন্টের সঙ্গে যোগাযোগ করে।
  • Local Clients: যদি ক্লায়েন্ট এবং সার্ভার একই JVM-এ থাকে, তাহলে এটি local communication হয়। সাধারণত এটি দ্রুত হয় কারণ এটি অন্য কোন নেটওয়ার্ক প্রোটোকলের ওপর নির্ভর করে না।

4. EJB Server Components এবং Clients এর মধ্যে সম্পর্ক

EJB Client এবং EJB Server Components এর মধ্যে যোগাযোগের মূল সম্পর্ক হল interface এবং invocation প্রক্রিয়া। এটি কাজ করে নিম্নলিখিত উপায়ে:

  • Session Beans (Stateless বা Stateful) সাধারণত একটি Remote Interface অথবা Local Interface প্রদান করে, যা ক্লায়েন্টের দ্বারা কল করা হয়। এই ইন্টারফেসের মাধ্যমে, ক্লায়েন্ট EJB Bean-এ সংজ্ঞায়িত মেথডগুলো কল করতে পারে।
  • Message-Driven Beans (MDB) মেসেজ পাঠানোর জন্য ব্যবহৃত হয়। ক্লায়েন্ট একটি মেসেজ সিস্টেমের মাধ্যমে MDB-তে মেসেজ পাঠাতে পারে।

EJB Client সাধারণত JNDI (Java Naming and Directory Interface) ব্যবহার করে EJB Server Component কে অনুসন্ধান করে এবং সেগুলির মেথডগুলো কল করে। JNDI সার্ভারের সাথে সংযোগ স্থাপন করে EJB কম্পোনেন্টের রেফারেন্স পেতে সাহায্য করে।

5. EJB Client এবং Server Components এর মধ্যে যোগাযোগের উদাহরণ

এখন, আমরা একটি উদাহরণ দিয়ে দেখব কিভাবে EJB Client এবং EJB Server Components একে অপরের সাথে যোগাযোগ করে।

উদাহরণ: Stateless Session Bean এর সাথে যোগাযোগ

  1. EJB Server Component (Stateless Session Bean):
// MyStatelessBean.java
import javax.ejb.Stateless;

@Stateless
public class MyStatelessBean implements MyStatelessBeanRemote {

    @Override
    public String greet(String name) {
        return "Hello, " + name + "!";
    }
}

এখানে @Stateless অ্যানোটেশন ব্যবহার করা হয়েছে এবং এটি MyStatelessBeanRemote ইন্টারফেসের মাধ্যমে গ্রীট মেথডটি এক্সপোজ করছে।

// MyStatelessBeanRemote.java
import javax.ejb.Remote;

@Remote
public interface MyStatelessBeanRemote {
    String greet(String name);
}
  1. EJB Client (Remote Client):

EJB ক্লায়েন্টটি সাধারণত JNDI মাধ্যমে EJB সার্ভারের সাথে যোগাযোগ করে এবং Remote Interface ব্যবহার করে মেথড কল করে।

// EJBClient.java
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class EJBClient {
    public static void main(String[] args) {
        try {
            // Get EJB reference from JNDI
            Context context = new InitialContext();
            MyStatelessBeanRemote bean = (MyStatelessBeanRemote) context.lookup("java:global/myEJBApp/MyStatelessBean!com.example.MyStatelessBeanRemote");
            
            // Call the EJB method
            String result = bean.greet("John");
            System.out.println(result);
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }
}

এখানে JNDI দ্বারা MyStatelessBeanRemote রেফারেন্স লুকআপ করা হয় এবং ক্লায়েন্ট greet() মেথড কল করে। ক্লায়েন্ট এবং EJB কম্পোনেন্টের মধ্যে যোগাযোগটি Remote Communication এর মাধ্যমে হয়, কারণ তারা আলাদা JVM-এ রান করছে।

6. Local Client Example (Same JVM)

যদি ক্লায়েন্ট এবং EJB কম্পোনেন্ট একই JVM-এ থাকে, তাহলে Local Interface ব্যবহার করা হয়।

Local Interface:

// MyStatelessBeanLocal.java
import javax.ejb.Local;

@Local
public interface MyStatelessBeanLocal {
    String greet(String name);
}

EJB Bean:

// MyStatelessBean.java
import javax.ejb.Stateless;

@Stateless
public class MyStatelessBean implements MyStatelessBeanLocal {
    @Override
    public String greet(String name) {
        return "Hello, " + name + "!";
    }
}

EJB Client (Local Client):

// EJBClientLocal.java
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class EJBClientLocal {
    public static void main(String[] args) {
        try {
            // Get EJB reference from JNDI
            Context context = new InitialContext();
            MyStatelessBeanLocal bean = (MyStatelessBeanLocal) context.lookup("java:global/myEJBApp/MyStatelessBean!com.example.MyStatelessBeanLocal");
            
            // Call the EJB method
            String result = bean.greet("John");
            System.out.println(result);
        } catch (NamingException e) {
            e.printStackTrace();
        }
    }
}

এখানে Local Interface ব্যবহৃত হচ্ছে এবং ক্লায়েন্ট একই JVM-এ থেকে EJB কম্পোনেন্টের সাথে যোগাযোগ করছে।

EJB Client এবং EJB Server Components একে অপরের সাথে Remote অথবা Local ইন্টারফেসের মাধ্যমে যোগাযোগ করে। EJB Server Components ব্যবসায়িক লজিক প্রদান করে এবং EJB Clients সেই লজিক কল করে তাদের প্রয়োজনে। এই সম্পর্কটি অ্যাপ্লিকেশন আর্কিটেকচারে একটি client-server মডেল অনুসরণ করে, যেখানে EJB Server Components বাস্তবায়ন এবং ডেটা পরিচালনা করে, এবং EJB Clients সেই সেবা গ্রহণ করে।

Content added By
Promotion

Are you sure to start over?

Loading...