RMI Callback এমন একটি পদ্ধতি, যেখানে সার্ভার একটি ক্লায়েন্টে ফিরে কল করতে পারে। এটি সাধারণত এমন পরিস্থিতিতে ব্যবহৃত হয় যেখানে ক্লায়েন্ট কোনো কাজ শুরু করে এবং সার্ভার সেই কাজের ফলাফল ক্লায়েন্টকে জানায়। RMI Callback সিস্টেমে ক্লায়েন্টকে Remote Object হিসেবে নিবন্ধন করতে হয় যাতে সার্ভার সেটিকে কল করতে পারে।
RMI Callback এর কাজের প্রক্রিয়া
- Callback Interface:
- ক্লায়েন্ট-সাইডে রিমোট ইন্টারফেস তৈরি করা হয়, যা সার্ভার কলব্যাকের জন্য ব্যবহার করে।
- Callback Implementation:
- ক্লায়েন্ট এই রিমোট ইন্টারফেস ইমপ্লিমেন্ট করে এবং সার্ভারে রেজিস্টার করে।
- Callback Registration:
- ক্লায়েন্ট কলব্যাক অবজেক্ট সার্ভারে নিবন্ধন করে।
- Server Initiated Callback:
- সার্ভার ক্লায়েন্টের রিমোট মেথড কল করে।
RMI Callback বাস্তবায়ন উদাহরণ
Step 1: Callback Interface তৈরি
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Callback extends Remote {
void notifyClient(String message) throws RemoteException;
}
Step 2: Server Interface তৈরি
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Server extends Remote {
void registerCallback(Callback clientCallback) throws RemoteException;
void performTask() throws RemoteException;
}
Step 3: Server Implementation
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.List;
public class ServerImpl extends UnicastRemoteObject implements Server {
private final List<Callback> clients;
protected ServerImpl() throws RemoteException {
super();
clients = new ArrayList<>();
}
@Override
public void registerCallback(Callback clientCallback) throws RemoteException {
clients.add(clientCallback);
System.out.println("Client registered for callback.");
}
@Override
public void performTask() throws RemoteException {
System.out.println("Performing task on the server...");
// Task complete, notify clients
for (Callback client : clients) {
client.notifyClient("Task completed successfully!");
}
}
}
Step 4: Callback Implementation (Client-Side)
import java.rmi.server.UnicastRemoteObject;
public class ClientCallbackImpl extends UnicastRemoteObject implements Callback {
protected ClientCallbackImpl() throws RemoteException {
super();
}
@Override
public void notifyClient(String message) throws RemoteException {
System.out.println("Callback received from server: " + message);
}
}
Step 5: Server Main Class
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
public class ServerMain {
public static void main(String[] args) {
try {
LocateRegistry.createRegistry(1099);
ServerImpl server = new ServerImpl();
Naming.rebind("rmi://localhost:1099/Server", server);
System.out.println("Server is running...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
Step 6: Client Main Class
import java.rmi.Naming;
public class ClientMain {
public static void main(String[] args) {
try {
// Locate the server
Server server = (Server) Naming.lookup("rmi://localhost:1099/Server");
// Create and register client callback
Callback clientCallback = new ClientCallbackImpl();
server.registerCallback(clientCallback);
// Perform task on the server
server.performTask();
} catch (Exception e) {
e.printStackTrace();
}
}
}
RMI Callback কাজের ধাপ
- Server Object তৈরি করুন:
- সার্ভার
ServerImplঅবজেক্ট তৈরি করবে এবং RMI Registry-তে নিবন্ধন করবে।
- সার্ভার
- Client Callback Register করুন:
- ক্লায়েন্ট
registerCallback()মেথড কল করে সার্ভারে নিজের কলব্যাক রেজিস্টার করবে।
- ক্লায়েন্ট
- Server থেকে Callback Initiate করুন:
- সার্ভার
notifyClient()মেথড ব্যবহার করে ক্লায়েন্টে কলব্যাক পাঠাবে।
- সার্ভার
- Callback Message রিসিভ করুন:
- ক্লায়েন্ট কলব্যাক রেসপন্স প্রিন্ট করবে।
উদাহরণের আউটপুট
Server Console
Server is running...
Client registered for callback.
Performing task on the server...
Client Console
Callback received from server: Task completed successfully!
Callback বাস্তবায়নের সুবিধা
- Bidirectional Communication:
- ক্লায়েন্ট-সার্ভারের মধ্যে দুই-দিকের যোগাযোগ সম্ভব হয়।
- Event-Driven Architecture:
- সার্ভার ক্লায়েন্টকে ইভেন্ট সম্পন্ন হলে অবহিত করতে পারে।
- ডাইনামিক নোটিফিকেশন:
- একাধিক ক্লায়েন্টকে একইসাথে নোটিফিকেশন পাঠানো যায়।
RMI Callback একটি শক্তিশালী কৌশল, যা ডিস্ট্রিবিউটেড সিস্টেমে দ্বিমুখী যোগাযোগের সুবিধা প্রদান করে। এই পদ্ধতির মাধ্যমে ক্লায়েন্ট এবং সার্ভার তাদের নিজ নিজ কাজ পরিচালনা করতে পারে এবং সার্ভারের ফলাফল ক্লায়েন্টে প্রেরণ করতে পারে।
Content added By
Read more