RMI Registry হল একটি বাইন্ডিং সার্ভিস যা রিমোট অবজেক্টগুলিকে একটি নির্দিষ্ট নামের সাথে নিবন্ধিত করে এবং ক্লায়েন্টদের সেই রিমোট অবজেক্ট খুঁজে পেতে সাহায্য করে। এটি মূলত একটি নাম-থেকে-অবজেক্ট ম্যাপিং সার্ভার, যা RMI Server এবং RMI Client-এর মধ্যে যোগাযোগ সহজতর করে।
RMI Registry এর কাজ
- রিমোট অবজেক্ট রেজিস্ট্রেশন:
RMI Registry-তে Server-side রিমোট অবজেক্ট bind করা হয়। এটি একটি নির্দিষ্ট নাম (যেমনCalculatorService) দিয়ে রিমোট অবজেক্ট নিবন্ধন করে। - ক্লায়েন্টের জন্য রিমোট অবজেক্ট সরবরাহ:
ক্লায়েন্ট lookup মেথড ব্যবহার করে নির্দিষ্ট নাম দিয়ে রেজিস্ট্রিতে নিবন্ধিত রিমোট অবজেক্টের রেফারেন্স পেতে পারে। - ক্লায়েন্ট-সার্ভার যোগাযোগ নিশ্চিত করা:
RMI Registry ক্লায়েন্ট এবং সার্ভারকে একে অপরের সাথে সংযোগ স্থাপন করতে সাহায্য করে। এটি Server-side Stub প্রদান করে, যা ক্লায়েন্ট তার RMI কলগুলির জন্য ব্যবহার করে। - ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন সমর্থন করা:
RMI Registry ডিস্ট্রিবিউটেড সিস্টেমে অনেকগুলো রিমোট অবজেক্ট পরিচালনা করে এবং ক্লায়েন্ট-সার্ভার মিথস্ক্রিয়া সহজ করে তোলে।
RMI Registry ব্যবহারের ধাপ
1. RMI Registry তৈরি করা
RMI Registry তৈরি করতে LocateRegistry.createRegistry() মেথড ব্যবহার করা হয়।
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Server {
public static void main(String[] args) {
try {
// রিমোট অবজেক্ট তৈরি
HelloImpl obj = new HelloImpl();
// RMI Registry তৈরি
Registry registry = LocateRegistry.createRegistry(1099);
// রিমোট অবজেক্ট bind করা
registry.bind("HelloService", obj);
System.out.println("RMI Server is running...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
2. RMI Registry-তে রিমোট অবজেক্ট bind করা
RMI Registry-তে একটি নির্দিষ্ট নাম দিয়ে রিমোট অবজেক্ট নিবন্ধন করতে bind() বা rebind() মেথড ব্যবহার করা হয়।
bind(String name, Remote obj): প্রথমবার রিমোট অবজেক্ট নিবন্ধন করতে ব্যবহৃত হয়।rebind(String name, Remote obj): যদি একই নাম দিয়ে অবজেক্ট আগেই নিবন্ধিত থাকে, এটি সেটিকে ওভাররাইট করে।
3. RMI Registry-তে অবজেক্ট খুঁজে বের করা
ক্লায়েন্ট LocateRegistry.getRegistry() মেথড ব্যবহার করে RMI Registry-তে সংযুক্ত হয় এবং lookup() মেথড দিয়ে রিমোট অবজেক্ট পায়।
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);
// রিমোট অবজেক্ট খুঁজে বের করা
Hello stub = (Hello) registry.lookup("HelloService");
// রিমোট মেথড কল করা
System.out.println(stub.sayHello());
} catch (Exception e) {
e.printStackTrace();
}
}
}
RMI Registry এর মূল মেথডগুলো
| মেথড | বিবরণ |
|---|---|
bind(String name, Remote obj) | রিমোট অবজেক্টকে নির্দিষ্ট নাম দিয়ে RMI Registry-তে নিবন্ধন করে। |
rebind(String name, Remote obj) | বিদ্যমান নামের উপর নতুন রিমোট অবজেক্ট bind করে। |
lookup(String name) | নির্দিষ্ট নাম দিয়ে রিমোট অবজেক্টের রেফারেন্স রিটার্ন করে। |
unbind(String name) | RMI Registry থেকে রিমোট অবজেক্টের নাম আনরেজিস্টার করে। |
list() | RMI Registry-তে নিবন্ধিত সমস্ত অবজেক্টের নামের তালিকা প্রদান করে। |
RMI Registry চালু করা
1. RMI Registry কমান্ড ব্যবহার করে চালানো
আপনার সিস্টেমে RMI Registry চালু করতে নিচের কমান্ডটি ব্যবহার করুন:
rmiregistry
ডিফল্ট পোর্ট 1099।
2. কাস্টম পোর্ট দিয়ে RMI Registry চালানো
rmiregistry 2020
3. Java কোড থেকে RMI Registry তৈরি করা
RMI Registry তৈরি করতে Java-এর LocateRegistry.createRegistry(port) মেথড ব্যবহার করা হয়। উদাহরণ:
Registry registry = LocateRegistry.createRegistry(1099);
RMI Registry এর সুবিধা
- সেন্ট্রালাইজড ম্যাপিং:
ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ সহজ করে। - ডাইনামিক নিবন্ধন:
নতুন রিমোট অবজেক্ট সহজেই যোগ করা বা পুরোনো অবজেক্ট পরিবর্তন করা যায়। - মাল্টি-ক্লায়েন্ট সাপোর্ট:
একই রিমোট অবজেক্টের জন্য একাধিক ক্লায়েন্ট অ্যাক্সেস প্রদান করা সম্ভব। - নাম-ভিত্তিক অনুসন্ধান:
রিমোট অবজেক্ট সহজে খুঁজে বের করা যায়।
RMI Registry হল RMI প্রযুক্তির একটি গুরুত্বপূর্ণ উপাদান, যা রিমোট অবজেক্টের অবস্থান নির্ধারণ এবং ক্লায়েন্ট-সার্ভার মিথস্ক্রিয়া সহজতর করে। এটি RMI-ভিত্তিক ডিস্ট্রিবিউটেড অ্যাপ্লিকেশনগুলোর জন্য একটি অপরিহার্য উপাদান।
Read more