Java RMI (Remote Method Invocation) এর মাধ্যমে একটি Server Class তৈরি করতে হয় যা রিমোট অবজেক্ট রেজিস্ট্রি (Registry) এর সাথে রিমোট অবজেক্ট নিবন্ধন করে। এই ক্লাসটি RMI-র মূল অংশ এবং Client থেকে রিমোট কল গ্রহণ ও পরিচালনা করে।
RMI Server Class তৈরির ধাপ
1. Remote Interface ইমপ্লিমেন্ট করা
Server Class-টি একটি Remote Interface ইমপ্লিমেন্ট করে, যা রিমোট মেথডগুলির ডিফিনিশন ধারণ করে।
2. Remote Object তৈরি করা
Remote Object-টি UnicastRemoteObject-এর সাবক্লাস হিসাবে তৈরি করা হয় এবং Remote Interface ইমপ্লিমেন্ট করে।
3. RMI Registry-তে Remote Object নিবন্ধন করা
RMI Registry-তে Remote Object নিবন্ধন করার জন্য LocateRegistry এবং Registry ব্যবহার করা হয়।
RMI Server Class উদাহরণ
1. Remote Interface তৈরি করা
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Hello extends Remote {
String sayHello() throws RemoteException;
}
2. Remote Object Implementation
import java.rmi.server.UnicastRemoteObject;
import java.rmi.RemoteException;
public class HelloImpl extends UnicastRemoteObject implements Hello {
protected HelloImpl() throws RemoteException {
super();
}
@Override
public String sayHello() throws RemoteException {
return "Hello, RMI Server!";
}
}
3. Server Class তৈরি করা
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Server {
public static void main(String[] args) {
try {
// Remote Object তৈরি
HelloImpl obj = new HelloImpl();
// RMI Registry তৈরি বা বিদ্যমান Registry ব্যবহার
Registry registry = LocateRegistry.createRegistry(1099);
// Remote Object নিবন্ধন
registry.bind("HelloService", obj);
System.out.println("RMI Server is running...");
} catch (Exception e) {
System.err.println("Server exception: " + e.toString());
e.printStackTrace();
}
}
}
বিস্তারিত ব্যাখ্যা
1. UnicastRemoteObject:
HelloImpl ক্লাসটি UnicastRemoteObject-কে প্রসারিত করে, যা রিমোট ক্লাস তৈরি এবং রেজিস্ট্রেশন পরিচালনা করে। এটি Remote Object-কে ক্লায়েন্টের জন্য অ্যাক্সেসযোগ্য করে তোলে।
2. LocateRegistry.createRegistry():
LocateRegistry.createRegistry(1099) দ্বারা একটি RMI Registry তৈরি করা হয় যা ডিফল্টভাবে 1099 পোর্টে কাজ করে।
3. registry.bind():
bind() মেথড Remote Object-কে একটি নির্দিষ্ট নামের (যেমন "HelloService") সাথে RMI Registry-তে নিবন্ধন করে। এটি ক্লায়েন্টদের জন্য উপলব্ধ হয়।
4. Exception Handling:
RMI Server Class তৈরির সময় সম্ভাব্য ব্যতিক্রম যেমন RemoteException, AlreadyBoundException, ইত্যাদি হ্যান্ডল করা হয়।
Server Class চালানোর নির্দেশনা
Policy File তৈরি করুন (optional):
server.policyনামে একটি Policy ফাইল তৈরি করুন:grant { permission java.security.AllPermission; };Server Compile করুন:
javac *.javaServer চালু করুন:
java -Djava.security.policy=server.policy Server
উপরের উদাহরণের মাধ্যমে আপনি সহজেই একটি RMI Server Class তৈরি করতে পারবেন। এটি রিমোট অবজেক্টকে নিবন্ধন এবং ব্যবস্থাপনা করার জন্য মূল ভূমিকা পালন করে। Client-Server আর্কিটেকচারে এই Server Class Client-কে রিমোট মেথডগুলিতে অ্যাক্সেস দেওয়ার ক্ষমতা প্রদান করে।
Read more