RMI (Remote Method Invocation) হলো একটি মেকানিজম যা একটি JVM-এ চলমান অবজেক্টকে অন্য JVM-এ চলমান অবজেক্টের মেথড কল করার অনুমতি দেয়। এটি ডিস্ট্রিবিউটেড অ্যাপ্লিকেশন বানাতে ব্যবহৃত হয়। প্যাকেজ: java.rmi।
RMI অ্যাপ্লিকেশন লেখার ৬ ধাপ
ধাপ ১: রিমোট ইন্টারফেস ডিফাইন করা
java.rmi.Remote এক্সটেন্ড করতে হবে। সব মেথড RemoteException থ্রো করতে হবে।
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote {
void printMsg() throws RemoteException;
}
ধাপ ২: ইমপ্লিমেন্টেশন ক্লাস (রিমোট অবজেক্ট) তৈরি
public class ImplExample implements Hello {
public void printMsg() {
System.out.println("This is an example RMI program");
}
}
ধাপ ৩: সার্ভার প্রোগ্রাম লিখা
রিমোট অবজেক্ট তৈরি করে RMI রেজিস্ট্রিতে বাইন্ড (bind) করা।
import java.rmi.registry.Registry;
import java.rmi.registry.LocateRegistry;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
public class Server {
public static void main(String args[]) {
try {
ImplExample obj = new ImplExample();
Hello stub = (Hello) UnicastRemoteObject.exportObject(obj, 0);
Registry registry = LocateRegistry.getRegistry(); // ডিফল্ট পোর্ট 1099
registry.bind("Hello", stub);
System.err.println("Server ready");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}
ধাপ ৪: ক্লায়েন্ট প্রোগ্রাম লিখা
রেজিস্ট্রি থেকে স্টাব (stub) লুকআপ করে মেথড কল করা।
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
public static void main(String[] args) {
try {
Registry registry = LocateRegistry.getRegistry(null); // localhost
Hello stub = (Hello) registry.lookup("Hello");
stub.printMsg();
} catch (Exception e) {
System.err.println("Client exception: " + e.toString());
e.printStackTrace();
}
}
}
ধাপ ৫: কম্পাইল করা
javac Hello.java ImplExample.java Server.java Client.java
ধাপ ৬: এক্সিকিউশন
- RMI রেজিস্ট্রি স্টার্ট করুন: কমান্ড প্রম্পটে
rmiregistryরান করুন (আলাদা উইন্ডো খুলবে)। - সার্ভার রান করুন:
java Server - ক্লায়েন্ট রান করুন:
java Client
ভারিফিকেশন: ক্লায়েন্ট স্টার্ট হলে সার্ভার কনসোলে "This is an example RMI program" প্রিন্ট হবে।
দ্রষ্টব্য: নেটওয়ার্ক কনফিগারেশন (ফায়ারওয়াল, হোস্টনেম, security policy) সঠিক থাকতে হবে। প্রোডাকশনে Spring Remoting, gRPC, বা REST API আরও phổল।