Ví dụ 7-2. Viết chương trình tìm ước số chung lớn nhất và kiểm tra tính nguyên
tố của hai số nguyên dương bất kỳ, sử dụng kỹ thuật lập trình RMI. Phương thức kiểm tra số nguyên tố và phương thức tính ước số chung lớn nhất của hai số được triệu gọi từ xa.
Bước 1: Tạo 2 project RMI_XuLySo_Client và RMI_XuLySo_Server.
Bước 2: Trong project RMI_XuLySo_Server tạo một package đặt tên là Core.
Trong package này tạo một interface đặt tên là NumberInterface với nội dung như sau:
public interface NumberInterface extends Remote{
public int ucln(int a, int b) throws RemoteException; public boolean isPrime(int x) throws RemoteException; }
Phương thức ucln(int a, int b) dùng để dùng để tìm ước số chung lớn nhất của hai số nguyên a và b.
Phương thức isPrime(int x) dùng để kiểm tra một số x có phải là số nguyên tố hay không.
Sao chép package Core sang project RMI_XuLySo_Client.
Bước 3: Hiện thực NumberInterface. Trong project RMI_XuLySo_Server tạo một package mới đặt tên là RMI. Trong package này tạo một lớp mới đặt tên là
NumberClass.
Hiện thực hóa interface trong lớp này như sau:
public class NumberClass extends UnicastRemoteObject implements NumberInterface{
//Constructor
public NumberClass() throws RemoteException { }
@Override
public int ucln(int a, int b) throws RemoteException { while (a != b) { if (a>b) { a = a-b; } else { b = b-a; } } return a; } @Override
public boolean isPrime(int x) throws RemoteException { for (int i = 2; i <= Math.sqrt(x); i++) {
if (x%i == 0) { return false; } } return true; } }
Bước 4: Lập trình cho Server. Trong package RMI tạo class đặt tên là Server.
Chúng ta tạo một Registry trên cổng bất kỳ (chẳng hạn 3210) rồi ràng buộc (bind) một tên là NumberService cho một đối tượng thuộc lớp NumberClass trên đó.
public class Server {
private final int PORT = 3210;
public static void main(String[] args) { new Server().run();
}
public void run() { try {
Registry reg = LocateRegistry.createRegistry(PORT); reg.rebind("NumberService", new NumberClass()); System.out.println("M‡y chủ đang chạy..."); } catch (RemoteException ex) {
System.out.println("Kh™ng thể khởi chạy m‡y chủ!!!"); }
} }
Bước 5: Lập trình cho Client. Trong project RMI_XuLySo_Client tạo một
package đặt tên là RMI. Trong package này tạo một JFrame Form đặt tên là Client. Thiết kế giao diện cho Client như sau: