Java RMI (Remote Method Invocation)-এর একটি গুরুত্বপূর্ণ ধাপ হল Remote Interface তৈরি করা এবং তাতে Remote Methods সংজ্ঞায়িত করা। Remote Interface হল একটি ইন্টারফেস যা java.rmi.Remote ইন্টারফেসটি এক্সটেন্ড করে।
Remote Method হলো এমন মেথড যা ক্লায়েন্ট মেশিন থেকে সার্ভারে কল করা যায়। প্রতিটি Remote Method-এ java.rmi.RemoteException থ্রো করতে হয়, কারণ এটি নেটওয়ার্ক বা রিমোট কমিউনিকেশন সমস্যা হ্যান্ডেল করে।
Remote Interface তৈরি করার ধাপ
- Remote Interface তৈরি করুন:
Remote Interface-এ সমস্ত মেথড সংজ্ঞায়িত করুন যা ক্লায়েন্ট কল করবে। java.rmi.Remoteইন্টারফেস এক্সটেন্ড করুন:
Remote Interface অবশ্যইjava.rmi.Remoteএক্সটেন্ড করতে হবে।- মেথডে
throws RemoteExceptionযুক্ত করুন:
প্রতিটি Remote Method অবশ্যইthrows RemoteExceptionডিক্লেয়ার করতে হবে।
উদাহরণ: Remote Interface এ Remote Method সংজ্ঞা
Remote Interface তৈরি:
import java.rmi.Remote;
import java.rmi.RemoteException;
// Remote Interface
public interface Calculator extends Remote {
// Remote Methods
int add(int a, int b) throws RemoteException;
int subtract(int a, int b) throws RemoteException;
int multiply(int a, int b) throws RemoteException;
double divide(int a, int b) throws RemoteException;
}
বর্ণনা:
CalculatorInterface: এটি একটি Remote Interface।- Remote Methods:
add(int a, int b)দুটি সংখ্যা যোগ করে।subtract(int a, int b)দুটি সংখ্যার বিয়োগফল প্রদান করে।multiply(int a, int b)দুটি সংখ্যার গুণফল প্রদান করে।divide(int a, int b)দুটি সংখ্যার ভাগফল প্রদান করে।
- প্রতিটি মেথড
RemoteExceptionথ্রো করতে পারে।
Remote Interface এর কাজের ভূমিকা
- Remote Interface শুধুমাত্র মেথডের সিগনেচার সংজ্ঞায়িত করে।
- Remote Interface-এর মেথডগুলি সার্ভার-এ বাস্তবায়িত হয়।
- ক্লায়েন্ট Remote Interface ব্যবহার করে সার্ভারের মেথড কল করতে পারে।
Remote Interface এর মাধ্যমে মেথড কলের প্রক্রিয়া
সার্ভারে ইমপ্লিমেন্টেশন:
সার্ভার Remote Interface-এর ইমপ্লিমেন্টেশন ক্লাসে মেথডগুলি বাস্তবায়ন করে।উদাহরণ:
import java.rmi.server.UnicastRemoteObject; import java.rmi.RemoteException; public class CalculatorImpl extends UnicastRemoteObject implements Calculator { public CalculatorImpl() throws RemoteException { super(); } @Override public int add(int a, int b) throws RemoteException { return a + b; } @Override public int subtract(int a, int b) throws RemoteException { return a - b; } @Override public int multiply(int a, int b) throws RemoteException { return a * b; } @Override public double divide(int a, int b) throws RemoteException { if (b == 0) { throw new ArithmeticException("Division by zero is not allowed"); } return (double) a / b; } }Remote Object Binding:
সার্ভারে Remote Object RMI Registry-তে bind করা হয়।উদাহরণ:
import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class Server { public static void main(String[] args) { try { CalculatorImpl calculator = new CalculatorImpl(); Registry registry = LocateRegistry.createRegistry(1099); registry.rebind("CalculatorService", calculator); System.out.println("Calculator Service is ready!"); } catch (Exception e) { e.printStackTrace(); } } }ক্লায়েন্ট থেকে Remote Method কল:
ক্লায়েন্ট RMI Registry থেকে Remote Object পায় এবং Remote Method কল করে।উদাহরণ:
import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class Client { public static void main(String[] args) { try { Registry registry = LocateRegistry.getRegistry("localhost", 1099); Calculator calculator = (Calculator) registry.lookup("CalculatorService"); System.out.println("Addition: " + calculator.add(5, 3)); System.out.println("Subtraction: " + calculator.subtract(5, 3)); System.out.println("Multiplication: " + calculator.multiply(5, 3)); System.out.println("Division: " + calculator.divide(10, 2)); } catch (Exception e) { e.printStackTrace(); } } }
Remote Interface-এ Remote Method সংজ্ঞা দেওয়ার সময়:
java.rmi.Remoteইন্টারফেস এক্সটেন্ড করুন।- প্রতিটি Remote Method-এ
throws RemoteExceptionযুক্ত করুন। - মেথডের শুধুমাত্র সিগনেচার সংজ্ঞা দিন।
এই ধাপগুলো অনুসরণ করলে Remote Object সহজে তৈরি এবং ক্লায়েন্ট থেকে সার্ভার মেথড কল করা সম্ভব হয়। RMI প্রযুক্তি Distributed Systems এর জন্য কার্যকর এবং টাইপ সেফ সমাধান প্রদান করে।
Read more