Naming.bind(), rebind(), এবং lookup() মেথড এর ব্যবহার

RMI Registry এবং Naming Service - জাভা আরএমআই (Java RMI) - Java Technologies

306

Java RMI-তে java.rmi.Naming ক্লাসটি রিমোট অবজেক্টকে RMI Registry-তে নিবন্ধন বা পুনঃনিবন্ধন করার জন্য এবং ক্লায়েন্ট প্রোগ্রামের মাধ্যমে রিমোট অবজেক্ট অ্যাক্সেস করার জন্য ব্যবহৃত হয়। এই ক্লাসের তিনটি গুরুত্বপূর্ণ মেথড হলো bind(), rebind(), এবং lookup()


1. Naming.bind() মেথড

উদ্দেশ্য:

  • রিমোট অবজেক্টকে RMI Registry-তে নির্দিষ্ট নামে নিবন্ধন করতে ব্যবহৃত হয়।
  • যদি একই নামে রিমোট অবজেক্ট ইতিমধ্যে রেজিস্ট্রি-তে থাকে, তবে এটি একটি AlreadyBoundException নিক্ষেপ করে।

পদ্ধতি:

Naming.bind(String name, Remote obj);

উদাহরণ:

Naming.bind("HelloService", remoteObject);

নোট:

  • bind() শুধুমাত্র নতুন রিমোট অবজেক্ট নিবন্ধনের জন্য ব্যবহার করুন। যদি নাম আগে থেকেই নিবন্ধিত থাকে, তাহলে এটি কাজ করবে না।

2. Naming.rebind() মেথড

উদ্দেশ্য:

  • রিমোট অবজেক্টকে RMI Registry-তে নিবন্ধন করে বা যদি একই নামে রিমোট অবজেক্ট ইতিমধ্যে নিবন্ধিত থাকে, তবে এটি পুরোনো অবজেক্টকে প্রতিস্থাপন করে।

পদ্ধতি:

Naming.rebind(String name, Remote obj);

উদাহরণ:

Naming.rebind("HelloService", remoteObject);

নোট:

  • rebind() একই নামে পুরোনো অবজেক্ট থাকলেও সেটিকে প্রতিস্থাপন করে নতুন রিমোট অবজেক্ট নিবন্ধন করতে সক্ষম।

3. Naming.lookup() মেথড

উদ্দেশ্য:

  • RMI Registry থেকে রিমোট অবজেক্ট খুঁজে বের করে এবং রিমোট রেফারেন্স রিটার্ন করে।
  • এটি সাধারণত ক্লায়েন্ট প্রোগ্রামে ব্যবহার করা হয়।

পদ্ধতি:

Remote ref = Naming.lookup(String name);

উদাহরণ:

Hello stub = (Hello) Naming.lookup("rmi://localhost:1099/HelloService");

নোট:

  • যদি নির্দিষ্ট নামের কোনো রিমোট অবজেক্ট রেজিস্ট্রি-তে পাওয়া না যায়, তাহলে এটি একটি NotBoundException নিক্ষেপ করে।

Naming মেথডের ব্যবহার: একটি উদাহরণ

Remote Interface:

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

public interface Hello extends Remote {
    String sayHello() throws RemoteException;
}

Remote Object Implementation:

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

public class HelloImpl extends UnicastRemoteObject implements Hello {
    protected HelloImpl() throws RemoteException {
        super();
    }

    @Override
    public String sayHello() throws RemoteException {
        return "Hello from RMI Server!";
    }
}

RMI Server:

import java.rmi.Naming;

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

            // RMI Registry-তে Remote Object নিবন্ধন
            Naming.bind("HelloService", remoteObject);  // প্রথমবার নিবন্ধন

            // অথবা Rebinding ব্যবহার করুন
            // Naming.rebind("HelloService", remoteObject);

            System.out.println("RMI Server is running...");
        } catch (Exception e) {
            System.err.println("Server exception: " + e.toString());
            e.printStackTrace();
        }
    }
}

RMI Client:

import java.rmi.Naming;

public class Client {
    public static void main(String[] args) {
        try {
            // RMI Registry থেকে Remote Object খুঁজে বের করা
            Hello stub = (Hello) Naming.lookup("rmi://localhost:1099/HelloService");

            // Remote Method কল করা
            String response = stub.sayHello();
            System.out.println("Response from server: " + response);
        } catch (Exception e) {
            System.err.println("Client exception: " + e.toString());
            e.printStackTrace();
        }
    }
}

Naming মেথডের তুলনা

মেথডব্যবহারব্যতিক্রম
bind()নতুন রিমোট অবজেক্ট নিবন্ধন করতে ব্যবহৃত।AlreadyBoundException
rebind()নতুন অবজেক্ট নিবন্ধন বা পুরোনো অবজেক্ট প্রতিস্থাপন করতে ব্যবহৃত।N/A
lookup()রেজিস্ট্রি থেকে রিমোট অবজেক্ট খুঁজে বের করতে ব্যবহৃত।NotBoundException

Naming.bind(), rebind(), এবং lookup() RMI অ্যাপ্লিকেশনে রিমোট অবজেক্ট নিবন্ধন ও ব্যবস্থাপনার গুরুত্বপূর্ণ মেথড।

  • bind() শুধুমাত্র নতুন অবজেক্ট নিবন্ধনের জন্য ব্যবহৃত হয়।
  • rebind() পুরোনো অবজেক্ট প্রতিস্থাপন করতে সক্ষম।
  • lookup() রেজিস্ট্রি থেকে অবজেক্ট খুঁজে ক্লায়েন্টকে রিমোট রেফারেন্স প্রদান করে।

এই মেথডগুলো RMI অ্যাপ্লিকেশনের কার্যকারিতা ও স্থিতিশীলতা নিশ্চিত করে।

Content added By
Promotion

Are you sure to start over?

Loading...