RMI Callback হল এমন একটি প্রক্রিয়া যেখানে RMI সার্ভার রিমোট ক্লায়েন্টকে তার মেথড কলব্যাক করে। অর্থাৎ, ক্লায়েন্ট শুধুমাত্র সার্ভারকে মেথড কল করে না, বরং সার্ভারও প্রয়োজন অনুসারে ক্লায়েন্টের মেথড কল করতে পারে। এটি Bi-Directional Communication নিশ্চিত করে।
RMI Callback মূলত Event-Driven Architecture এবং Client Notification এর জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, চ্যাট সিস্টেম, স্টক আপডেট, বা রিয়েল-টাইম নোটিফিকেশন সিস্টেমে এটি ব্যবহার করা হয়।
RMI Callback এর প্রধান কার্যপ্রণালী
- Client-Side Remote Interface:
ক্লায়েন্ট একটি Remote Interface তৈরি করে যাতে সার্ভার প্রয়োজনীয় সময়ে মেথড কল করতে পারে। - Server-Side Callback Logic:
সার্ভার ক্লায়েন্টের Remote Interface এর ইমপ্লিমেন্টেশন গ্রহণ করে এবং প্রয়োজন অনুযায়ী ক্লায়েন্টের মেথড কল করে।
RMI Callback বাস্তবায়নের ধাপ
ধাপ ১: Client-Side Remote Interface তৈরি করা
import java.rmi.Remote;
import java.rmi.RemoteException;
// Client Remote Interface
public interface ClientCallback extends Remote {
void notifyClient(String message) throws RemoteException;
}
ধাপ ২: Server-Side Remote Interface তৈরি করা
import java.rmi.Remote;
import java.rmi.RemoteException;
// Server Remote Interface
public interface Server extends Remote {
void registerClient(ClientCallback client) throws RemoteException;
void broadcastMessage(String message) throws RemoteException;
}
ধাপ ৩: Client-Side Remote Interface ইমপ্লিমেন্ট করা
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
// Client Callback Implementation
public class ClientCallbackImpl extends UnicastRemoteObject implements ClientCallback {
protected ClientCallbackImpl() throws RemoteException {
super();
}
@Override
public void notifyClient(String message) throws RemoteException {
System.out.println("Notification from Server: " + message);
}
}
ধাপ ৪: Server-Side Remote Interface ইমপ্লিমেন্ট করা
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.List;
// Server Implementation
public class ServerImpl extends UnicastRemoteObject implements Server {
private final List<ClientCallback> clients;
protected ServerImpl() throws RemoteException {
super();
clients = new ArrayList<>();
}
@Override
public void registerClient(ClientCallback client) throws RemoteException {
clients.add(client);
System.out.println("Client registered successfully!");
}
@Override
public void broadcastMessage(String message) throws RemoteException {
for (ClientCallback client : clients) {
client.notifyClient(message); // Call client callback method
}
}
}
ধাপ ৫: Server Application তৈরি করা
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
public class ServerApp {
public static void main(String[] args) {
try {
LocateRegistry.createRegistry(1099); // RMI Registry শুরু করা
ServerImpl server = new ServerImpl();
Naming.rebind("rmi://localhost:1099/ServerService", server);
System.out.println("Server is running...");
} catch (Exception e) {
e.printStackTrace();
}
}
}
ধাপ ৬: Client Application তৈরি করা
import java.rmi.Naming;
public class ClientApp {
public static void main(String[] args) {
try {
// Create and register client callback
ClientCallback clientCallback = new ClientCallbackImpl();
// Look up the server object
Server server = (Server) Naming.lookup("rmi://localhost:1099/ServerService");
// Register the client with the server
server.registerClient(clientCallback);
// Broadcast a message
server.broadcastMessage("Hello, Clients!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
RMI Callback এর ব্যবহার
- Real-Time Notifications:
- যেমন: চ্যাট অ্যাপ্লিকেশন বা স্টক মার্কেট আপডেট যেখানে সার্ভার বিভিন্ন ক্লায়েন্টকে রিয়েল-টাইম মেসেজ পাঠায়।
- Event Handling:
- সার্ভার যখন কোনো গুরুত্বপূর্ণ ইভেন্ট সনাক্ত করে, তখন এটি সংশ্লিষ্ট ক্লায়েন্টকে অবহিত করতে পারে।
- Distributed Systems Monitoring:
- ক্লায়েন্ট সার্ভারের কাছে ডেটা মনিটরিং রিকোয়েস্ট পাঠায়, এবং সার্ভার ফলাফল ক্লায়েন্টে পাঠায়।
RMI Callback ব্যবহারের সময় কিছু চ্যালেঞ্জ
- Network Latency:
- Callback এর সময় নেটওয়ার্ক ডিলে হতে পারে।
- Security:
- ক্লায়েন্ট-সার্ভার যোগাযোগ সুরক্ষিত করতে SSL/TLS ব্যবহার করা গুরুত্বপূর্ণ।
- Concurrency:
- একাধিক ক্লায়েন্টের callback হ্যান্ডেল করার সময় সঠিক synchronization নিশ্চিত করতে হবে।
- Client Availability:
- ক্লায়েন্ট অফলাইনে থাকলে callback কাজ করবে না, যা Fault Tolerance প্রয়োজন করে।
RMI Callback জাভা RMI প্রযুক্তির একটি শক্তিশালী ফিচার যা ক্লায়েন্ট এবং সার্ভারের মধ্যে Two-Way Communication সম্ভব করে। এটি বাস্তবায়নের মাধ্যমে ইভেন্ট-ড্রিভেন আর্কিটেকচার, রিয়েল-টাইম নোটিফিকেশন সিস্টেম, এবং অন্যান্য ইন্টারঅ্যাক্টিভ অ্যাপ্লিকেশন তৈরি করা যায়। সঠিকভাবে পরিকল্পনা এবং বাস্তবায়নের মাধ্যমে RMI Callback একটি কার্যকর টুল হতে পারে।
Read more