RMI Registry থেকে Remote Object খুঁজে বের করা

RMI Client তৈরি করা - জাভা আরএমআই (Java RMI) - Java Technologies

390

Java RMI Registry হলো একটি ডিরেক্টরি সার্ভিস যা Remote Objects সংরক্ষণ করে এবং ক্লায়েন্টদের সেগুলো খুঁজে বের করতে সাহায্য করে। ক্লায়েন্ট অ্যাপ্লিকেশনগুলো RMI Registry ব্যবহার করে সার্ভারে থাকা Remote Object এর রেফারেন্স পায় এবং তাদের মেথড কল করতে সক্ষম হয়।


RMI Registry কীভাবে কাজ করে?

  1. Server Side:
    • Remote Object তৈরি করা হয়।
    • RMI Registry-তে Remote Object রেজিস্টার করা হয় একটি নির্দিষ্ট নাম (binding name) সহ।
    • উদাহরণ: registry.rebind("RemoteObjectName", remoteObjectInstance);
  2. Client Side:
    • ক্লায়েন্ট RMI Registry-তে সংযোগ স্থাপন করে।
    • নির্দিষ্ট নাম ব্যবহার করে Remote Object খুঁজে বের করে (lookup)।
    • Remote Object এর মেথড কল করে।

RMI Registry থেকে Remote Object খুঁজে বের করার ধাপ

Step 1: RMI Registry চালু করা

  • RMI Registry চালু করতে rmiregistry কমান্ড ব্যবহার করতে হবে।
  • টার্মিনালে নিচের কমান্ড চালান:

    rmiregistry
    

    এটি ডিফল্টভাবে পোর্ট 1099-এ RMI Registry চালু করবে।

    Note: rmiregistry কমান্ড CLASSPATH সেটআপের উপর নির্ভর করে।


Step 2: RMI Registry-তে Remote Object রেজিস্টার করা (Server Side)

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Server {
    public static void main(String[] args) {
        try {
            // Remote Object তৈরি
            CalculatorImpl calculator = new CalculatorImpl();

            // RMI Registry তৈরি এবং Remote Object রেজিস্টার করা
            Registry registry = LocateRegistry.createRegistry(1099);
            registry.rebind("CalculatorService", calculator);

            System.out.println("Server is ready.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Key Points:

  1. LocateRegistry.createRegistry(1099):
    • সার্ভারে RMI Registry তৈরি করে।
  2. registry.rebind("CalculatorService", calculator):
    • Remote Object calculator-কে RMI Registry-তে CalculatorService নামে রেজিস্টার করে।

Step 3: RMI Registry থেকে Remote Object খুঁজে বের করা (Client Side)

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Client {
    public static void main(String[] args) {
        try {
            // RMI Registry থেকে সংযোগ স্থাপন
            Registry registry = LocateRegistry.getRegistry("localhost", 1099);

            // Remote Object খুঁজে বের করা
            Calculator calculator = (Calculator) registry.lookup("CalculatorService");

            // Remote Method কল করা
            int result = calculator.add(10, 20);
            System.out.println("Addition Result: " + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Key Points:

  1. LocateRegistry.getRegistry("localhost", 1099):
    • localhost এবং পোর্ট 1099 ব্যবহার করে RMI Registry-তে সংযোগ স্থাপন করে।
  2. registry.lookup("CalculatorService"):
    • CalculatorService নাম ব্যবহার করে Remote Object খুঁজে বের করে।
  3. Remote Method Invocation:
    • calculator.add(10, 20) কল করে সার্ভারের Remote Method চালানো হয়।

কোডের পূর্ণ উদাহরণ

1. Remote Interface

import java.rmi.Remote;
import java.rmi.RemoteException;

public interface Calculator extends Remote {
    int add(int a, int b) throws RemoteException;
    int subtract(int a, int b) throws RemoteException;
}

2. Remote Object Implementation

import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;

public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
    protected CalculatorImpl() throws RemoteException {
        super();
    }

    @Override
    public int add(int a, int b) throws RemoteException {
        return a + b;
    }

    @Override
    public int subtract(int a, int b) throws RemoteException {
        return a - b;
    }
}

3. Server Class

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Server {
    public static void main(String[] args) {
        try {
            CalculatorImpl calculator = new CalculatorImpl();
            Registry registry = LocateRegistry.createRegistry(1099);
            registry.rebind("CalculatorService", calculator);
            System.out.println("Server is ready.");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4. Client Class

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class Client {
    public static void main(String[] args) {
        try {
            Registry registry = LocateRegistry.getRegistry("localhost", 1099);
            Calculator calculator = (Calculator) registry.lookup("CalculatorService");
            int result = calculator.add(10, 20);
            System.out.println("Addition Result: " + result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

RMI Registry সংক্রান্ত গুরুত্বপূর্ণ বিষয়

  1. পোর্ট নম্বর ডিফল্ট:
    • RMI Registry সাধারণত পোর্ট 1099-এ চালু হয়। তবে এটি পরিবর্তন করা যায়।
  2. মাল্টিপল Remote Object রেজিস্ট্রেশন:
    • একই RMI Registry-তে একাধিক Remote Object রেজিস্টার করা যায়।
    • উদাহরণ:

      registry.rebind("Service1", object1);
      registry.rebind("Service2", object2);
      
  3. ব্যতিক্রম (Exceptions):
    • NotBoundException: নির্দিষ্ট নামের Remote Object যদি Registry-তে না থাকে।
    • AccessException: অবৈধ অ্যাক্সেসের কারণে ত্রুটি।

RMI Registry একটি গুরুত্বপূর্ণ কম্পোনেন্ট যা Remote Object গুলো সংরক্ষণ এবং খুঁজে বের করার সুবিধা প্রদান করে। ক্লায়েন্ট registry.lookup ব্যবহার করে Remote Object এর রেফারেন্স পায় এবং সার্ভারের মেথডগুলো কল করে। RMI Registry এর সঠিক ব্যবহার Distributed Application তৈরিতে সহজতা ও কার্যকারিতা বৃদ্ধি করে।

Content added By
Promotion

Are you sure to start over?

Loading...