UnicastRemoteObject হলো জাভার একটি ক্লাস যা RMI (Remote Method Invocation) এর মাধ্যমে রিমোট অবজেক্ট তৈরি করতে ব্যবহৃত হয়। এই ক্লাসটি java.rmi.server.UnicastRemoteObject প্যাকেজের অন্তর্ভুক্ত এবং এটি একটি রিমোট অবজেক্টকে ক্লায়েন্টদের সাথে সরাসরি যোগাযোগ করার উপযোগী করে তোলে।
UnicastRemoteObject এর ভূমিকা
- Remote Object Export করা:
UnicastRemoteObjectক্লাস একটি রিমোট অবজেক্টকে RMI Runtime Environment-এ "Export" করে, যাতে এটি রিমোট কল গ্রহণ করতে পারে।
- Socket Communication ব্যবহার:
- এটি TCP/IP সকেটের মাধ্যমে ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ পরিচালনা করে।
- Stub Generation:
UnicastRemoteObjectএকটি Stub (ক্লায়েন্ট-সাইড প্রক্সি) তৈরি করতে সহায়তা করে, যা ক্লায়েন্টের অনুরোধ রিমোট অবজেক্টে পাঠায়।
UnicastRemoteObject এর গঠন
public class UnicastRemoteObject extends RemoteServer implements Remote {
protected UnicastRemoteObject() throws RemoteException;
protected UnicastRemoteObject(int port) throws RemoteException;
protected UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf) throws RemoteException;
}
গুরুত্বপূর্ণ কনস্ট্রাক্টর:
- UnicastRemoteObject():
- ডিফল্ট কনস্ট্রাক্টর যা রিমোট অবজেক্টকে ডিফল্ট পোর্টে এক্সপোর্ট করে।
- UnicastRemoteObject(int port):
- একটি নির্দিষ্ট পোর্ট নম্বর দিয়ে রিমোট অবজেক্ট এক্সপোর্ট করার জন্য ব্যবহৃত হয়।
- UnicastRemoteObject(int port, RMIClientSocketFactory csf, RMIServerSocketFactory ssf):
- কাস্টম ক্লায়েন্ট এবং সার্ভার সকেট ফ্যাক্টরি ব্যবহার করে রিমোট অবজেক্ট এক্সপোর্ট করার জন্য ব্যবহৃত হয়।
UnicastRemoteObject ব্যবহার করে Remote Object তৈরি করার ধাপসমূহ
- Remote Interface তৈরি করা:
java.rmi.Remoteইন্টারফেস প্রসারিত করে রিমোট মেথড ঘোষণা করা হয়।
- Remote Object ক্লাস তৈরি করা:
UnicastRemoteObjectএক্সটেন্ড করে এবং রিমোট ইন্টারফেস ইমপ্লিমেন্ট করে রিমোট অবজেক্ট তৈরি করা হয়।
- RMI Server তৈরি করা:
- RMI Registry-তে রিমোট অবজেক্ট রেজিস্টার করা হয়।
- RMI Client তৈরি করা:
- RMI Registry থেকে রিমোট অবজেক্ট খুঁজে বের করে এবং মেথড কল করা হয়।
উদাহরণ: UnicastRemoteObject এর মাধ্যমে Remote Object তৈরি
1. Remote Interface তৈরি করা
import java.rmi.Remote;
import java.rmi.RemoteException;
// Remote Interface
public interface Calculator extends Remote {
int add(int a, int b) throws RemoteException;
int subtract(int a, int b) throws RemoteException;
}
2. Remote Object ক্লাস তৈরি করা
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
// Remote Object Implementation
public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
// Constructor
public CalculatorImpl() throws RemoteException {
super();
}
// Implementation of add method
public int add(int a, int b) throws RemoteException {
return a + b;
}
// Implementation of subtract method
public int subtract(int a, int b) throws RemoteException {
return a - b;
}
}
3. RMI Server তৈরি করা
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Server {
public static void main(String[] args) {
try {
// Create Remote Object
CalculatorImpl calculator = new CalculatorImpl();
// Bind Remote Object to RMI Registry
Registry registry = LocateRegistry.createRegistry(1099);
registry.rebind("CalculatorService", calculator);
System.out.println("RMI Server is running...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
4. RMI Client তৈরি করা
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
Calculator calculator = (Calculator) registry.lookup("CalculatorService");
// Call Remote Methods
System.out.println("Addition: " + calculator.add(10, 20));
System.out.println("Subtraction: " + calculator.subtract(50, 30));
} catch (Exception e) {
e.printStackTrace();
}
}
}
কোড কম্পাইল এবং চালানোর ধাপসমূহ
কম্পাইল করা:
javac *.javaRMI Registry চালানো:
rmiregistry 1099Server চালানো:
java ServerClient চালানো:
java Client
UnicastRemoteObject ব্যবহার করে রিমোট অবজেক্ট তৈরি করা RMI অ্যাপ্লিকেশনের একটি প্রধান ধাপ। এটি রিমোট অবজেক্ট এক্সপোর্ট এবং Stub জেনারেশনের কাজ সহজ করে। এর মাধ্যমে সহজে Distributed Application তৈরি করা যায়, যেখানে ক্লায়েন্ট এবং সার্ভার রিমোট অবজেক্টের মাধ্যমে যোগাযোগ করতে পারে।
Read more