RMI Registry হলো একটি নামকরণ পরিষেবা যা রিমোট অবজেক্টগুলোর নাম এবং তাদের অবস্থানের মধ্যে একটি ম্যাপ সংরক্ষণ করে। RMI Registry ব্যবহার করে, ক্লায়েন্ট অ্যাপ্লিকেশন রিমোট অবজেক্টগুলোর সাথে সংযোগ স্থাপন করতে পারে। Binding এবং Unbinding হলো RMI Registry পরিচালনার দুটি গুরুত্বপূর্ণ প্রক্রিয়া।
RMI Registry-তে Object Binding এবং Unbinding
1. Binding:
RMI Registry তে একটি রিমোট অবজেক্টকে একটি নির্দিষ্ট নামের সাথে নিবন্ধিত করা হয়, যাতে ক্লায়েন্ট সেই নামটি ব্যবহার করে অবজেক্ট খুঁজে পায়।
2. Unbinding:
RMI Registry থেকে একটি নির্দিষ্ট রিমোট অবজেক্টের নিবন্ধন অপসারণ করা হয়।
গুরুত্বপূর্ণ মেথডসমূহ
java.rmi.registry.Registry ইন্টারফেসে নিম্নলিখিত মেথডগুলো ব্যবহার করা হয়:
bind(String name, Remote obj)- নির্দিষ্ট
nameএবংobjএর সাথে একটি রিমোট অবজেক্টকে Registry তে নিবন্ধিত করে। - যদি ঐ নামটি আগে থেকেই নিবন্ধিত থাকে, তাহলে
AlreadyBoundExceptionছুঁড়ে দেয়।
- নির্দিষ্ট
rebind(String name, Remote obj)- পূর্বে নিবন্ধিত নাম থাকলে তা ওভাররাইট করে নতুন রিমোট অবজেক্ট রেজিস্টার করে।
unbind(String name)- নির্দিষ্ট নামের রিমোট অবজেক্টের নিবন্ধন Registry থেকে মুছে ফেলে।
lookup(String name)- নির্দিষ্ট নাম ব্যবহার করে একটি রিমোট অবজেক্ট খুঁজে পায়।
উদাহরণ: RMI Registry তে Object Bind এবং Unbind করা
1. Remote Interface তৈরি করা
import java.rmi.Remote;
import java.rmi.RemoteException;
// Remote Interface
public interface Greeting extends Remote {
String sayHello(String name) throws RemoteException;
}
2. Remote Object Implementation তৈরি করা
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
// Remote Object Implementation
public class GreetingImpl extends UnicastRemoteObject implements Greeting {
public GreetingImpl() throws RemoteException {
super();
}
@Override
public String sayHello(String name) throws RemoteException {
return "Hello, " + name + "!";
}
}
3. Server: Object Binding এবং Unbinding
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Server {
public static void main(String[] args) {
try {
// Create Remote Object
GreetingImpl greeting = new GreetingImpl();
// Start RMI Registry on port 1099
Registry registry = LocateRegistry.createRegistry(1099);
// Bind Object to Registry
String objectName = "GreetingService";
registry.bind(objectName, greeting);
System.out.println("Object bound to RMI Registry with name: " + objectName);
// Optional: Rebind Object (overwrite the previous binding)
// registry.rebind(objectName, greeting);
// Wait for unbind demonstration
Thread.sleep(10000);
// Unbind Object from Registry
registry.unbind(objectName);
System.out.println("Object unbound from RMI Registry with name: " + objectName);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4. Client: Object Lookup
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
public static void main(String[] args) {
try {
// Locate RMI Registry
Registry registry = LocateRegistry.getRegistry("localhost", 1099);
// Lookup Remote Object by name
Greeting greeting = (Greeting) registry.lookup("GreetingService");
// Call Remote Method
System.out.println(greeting.sayHello("John"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
RMI Registry তে Binding এবং Unbinding-এর ধাপসমূহ
Binding:
registry.bind("ObjectName", remoteObject);- যদি একই নামের আরেকটি অবজেক্ট আগে থেকেই নিবন্ধিত থাকে, তাহলে
AlreadyBoundExceptionছুঁড়ে দেবে।
- যদি একই নামের আরেকটি অবজেক্ট আগে থেকেই নিবন্ধিত থাকে, তাহলে
Rebinding:
registry.rebind("ObjectName", remoteObject);- পূর্বের নিবন্ধিত অবজেক্ট ওভাররাইট করে নতুন অবজেক্ট নিবন্ধিত করে।
Unbinding:
registry.unbind("ObjectName");- Registry থেকে নির্দিষ্ট নামের অবজেক্টের নিবন্ধন মুছে ফেলে।
Lookup:
Remote remoteObject = registry.lookup("ObjectName");- Registry থেকে নির্দিষ্ট নামের অবজেক্ট রিটার্ন করে।
কোড কম্পাইল এবং চালানোর ধাপসমূহ
কম্পাইল করা:
javac *.javaRMI Registry চালু করা:
rmiregistry 1099Server চালানো:
java ServerClient চালানো:
java Client
RMI Registry-তে bind, rebind, এবং unbind মেথডগুলো ব্যবহার করে রিমোট অবজেক্ট নিবন্ধিত এবং অপসারণ করা হয়। এর মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ সহজ হয়। Binding নিশ্চিত করে যে ক্লায়েন্ট নির্দিষ্ট নাম ব্যবহার করে সঠিক রিমোট অবজেক্ট অ্যাক্সেস করতে পারে।
Read more