Remote Interface হল জাভা RMI এর মূল ভিত্তি। এটি এমন একটি ইন্টারফেস যা java.rmi.Remote ইন্টারফেস এক্সটেন্ড করে। এর মেথডগুলো RemoteException থ্রো করতে পারে, এবং এগুলো Server-Side Implementation এ ইমপ্লিমেন্ট করা হয়।
Remote Interface তৈরির ধাপ
ধাপ ১: Remote Interface তৈরি করা
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; // বিয়োগ করার জন্য মেথড
}
Remote Interface এর Method ইমপ্লিমেন্ট করা
ধাপ ২: Remote Interface এর ইমপ্লিমেন্টেশন তৈরি করা
Remote Interface-এ ডিক্লেয়ার করা মেথডগুলোর ইমপ্লিমেন্টেশন Server-Side ক্লাসে করা হয়। এই ক্লাসটি java.rmi.server.UnicastRemoteObject এক্সটেন্ড করতে হবে।
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
// Implementation of Remote Interface
public class CalculatorImpl extends UnicastRemoteObject implements Calculator {
// Constructor
protected CalculatorImpl() throws RemoteException {
super();
}
// Implementing add method
@Override
public int add(int a, int b) throws RemoteException {
return a + b;
}
// Implementing subtract method
@Override
public int subtract(int a, int b) throws RemoteException {
return a - b;
}
}
Implementation এর বিস্তারিত বিশ্লেষণ
- UnicastRemoteObject:
- এই ক্লাসটি ব্যবহার করে ইমপ্লিমেন্ট করা রিমোট অবজেক্টকে একটি নির্দিষ্ট পোর্টে bind করা হয়।
- Constructor:
- CalculatorImpl ক্লাসের কনস্ট্রাক্টর RemoteException থ্রো করতে পারে কারণ এটি রিমোট মেথড হ্যান্ডল করে।
- Method Implementation:
- add এবং subtract মেথড সরাসরি দুইটি সংখ্যার উপর গণনা করে রেজাল্ট রিটার্ন করে।
- Exception Handling:
- প্রত্যেক মেথডে throws RemoteException ব্যবহার করা হয়।
ধাপ ৩: Server-Side Code
Implementation ক্লাসটি RMI Registry তে bind করতে হবে, যাতে ক্লায়েন্ট এটি অ্যাক্সেস করতে পারে।
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
public class Server {
public static void main(String[] args) {
try {
LocateRegistry.createRegistry(1099); // RMI Registry তৈরি করা
Calculator calculator = new CalculatorImpl();
Naming.rebind("rmi://localhost:1099/CalculatorService", calculator);
System.out.println("Calculator Service is ready.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
ধাপ ৪: Client-Side Code
ক্লায়েন্ট Remote Interface ব্যবহার করে RMI Registry থেকে সার্ভিস অ্যাক্সেস করবে।
import java.rmi.Naming;
public class Client {
public static void main(String[] args) {
try {
Calculator calculator = (Calculator) Naming.lookup("rmi://localhost:1099/CalculatorService");
System.out.println("Addition: " + calculator.add(5, 3)); // যোগফল: ৮
System.out.println("Subtraction: " + calculator.subtract(5, 3)); // বিয়োগফল: ২
} catch (Exception e) {
e.printStackTrace();
}
}
}
স্টেপ বাই স্টেপ কার্যপ্রক্রিয়া
- Remote Interface তৈরির ধাপ:
- রিমোট মেথডগুলোর নাম এবং সিগনেচার ডিক্লেয়ার করা।
- Implementation:
- Remote Interface-এ ডিক্লেয়ার করা মেথডগুলোর ইমপ্লিমেন্টেশন করা।
- Server-Side Binding:
- RMI Registry তে ইমপ্লিমেন্ট করা ক্লাসকে bind করা।
- Client-Side Invocation:
- ক্লায়েন্ট Remote Interface ব্যবহার করে রিমোট মেথড কল করে।
Remote Interface হল RMI এর কেন্দ্রীয় অংশ যা ক্লায়েন্ট এবং সার্ভারের মধ্যে কমিউনিকেশন নিশ্চিত করে। মেথডগুলোর ইমপ্লিমেন্টেশন Server-Side-এ করা হয় এবং এগুলো RMI Registry এর মাধ্যমে অ্যাক্সেসযোগ্য হয়। উপরের উদাহরণটি একটি সহজ RMI প্রজেক্টের জন্য Remote Interface এর মেথড ইমপ্লিমেন্ট করার পদ্ধতি ব্যাখ্যা করে।
Read more