RMI (Remote Method Invocation) là một công nghệ trong Java cho phép một đối tượng ở một máy tính (client) gọi phương thức của một đối tượng trên một máy tính khác (server) như thể nó đang gọi phương thức của một đối tượng cục bộ. Điều này làm cho việc phát triển các ứng dụng phân tán trở nên dễ dàng hơn và cho phép các hệ thống hoạt động với nhau trên mạng.
RMI bao gồm các thành phần chính sau:
Quá trình hoạt động của RMI có thể được mô tả như sau:
Dưới đây là một ví dụ đơn giản về cách sử dụng RMI trong Java.
Trước tiên, ta cần định nghĩa một interface mà client sẽ sử dụng để gọi các phương thức từ server.
import java.rmi.Remote; import java.rmi.RemoteException; // Interface RMI public interface Hello extends Remote { String sayHello() throws RemoteException; }
Tiếp theo, ta cần cài đặt interface này trong lớp server.
import java.rmi.server.UnicastRemoteObject; import java.rmi.RemoteException; // Cài đặt interface RMI public class HelloImpl extends UnicastRemoteObject implements Hello { public HelloImpl() throws RemoteException { super(); } public String sayHello() { return "Hello, World!"; } }
Bây giờ, ta tạo server để đăng ký đối tượng của mình với RMI Registry.
import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class Server { public static void main(String[] args) { try { // Tạo đối tượng HelloImpl hello = new HelloImpl(); // Đăng ký đối tượng với RMI Registry Registry registry = LocateRegistry.createRegistry(1099); registry.rebind("Hello", hello); System.out.println("Server ready"); } catch (Exception e) { e.printStackTrace(); } } }
Cuối cùng, ta tạo client để gọi phương thức trên server.
import java.rmi.registry.LocateRegistry; import java.rmi.registry.Registry; public class Client { public static void main(String[] args) { try { // Tìm RMI Registry Registry registry = LocateRegistry.getRegistry("localhost", 1099); // Tìm đối tượng từ xa Hello stub = (Hello) registry.lookup("Hello"); // Gọi phương thức String response = stub.sayHello(); System.out.println("Response: " + response); } catch (Exception e) { e.printStackTrace(); } } }
RMI là một công nghệ mạnh mẽ trong Java giúp lập trình viên phát triển các ứng dụng phân tán dễ dàng hơn. Bằng cách sử dụng RMI, bạn có thể gọi phương thức từ các đối tượng trên máy chủ từ xa, mở ra nhiều khả năng cho các ứng dụng Java. Công nghệ này rất hữu ích trong các ứng dụng yêu cầu giao tiếp giữa các thành phần khác nhau qua mạng, chẳng hạn như ứng dụng web hoặc dịch vụ phân tán.