Ví dụ 7-3. Viết chương trình xử lý xâu ký tự sử dụng kỹ thuật lập trình RMI.
Các chức năng xử lý xâu gồm có: chuyển thành xâu in thường, chuyển thành xâu in hoa, chuẩn hóa xâu (xóa các dấu cách thừa), đếm số từ của xâu. Các phương thức xử lý xâu được triệu gọi từ xa.
Bước 1: Tạo 2 project RMI_XuLyXau_Client và RMI_XuLyXau_Server.
Bước 2: Trong project RMI_XuLyXau_Server tạo một package đặt tên là Core.
Trong package này tạo một interface đặt tên là StringInterface như sau: public interface StringInterface extends Remote{
public String lower(String st) throws RemoteException; public String upper(String st) throws RemoteException;
public String standardize(String st) throws RemoteException; public int countWord(String st) throws RemoteException; }
Sao chép package Core sang project RMI_XuLyXau_Client.
Bước 3: Hiện thực StringInterface. Trong project RMI_XuLyXau_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à
StringClass.
Hiện thực hóa interface trong lớp này như sau:
public class StringClass extends UnicastRemoteObject implements StringInterface{
//Constructor
public StringClass() throws RemoteException { }
@Override
public String upper(String st) throws RemoteException { return st.toUpperCase();
}
@Override
public String lower(String st) throws RemoteException { return st.toLowerCase();
}
@Override
public String standardize(String st) throws RemoteException { String result = st.trim();
while (result.contains(" ")) { result = result.replace(" ", " "); } return result; } @Override
public int countWord(String st) throws RemoteException { String str = this.standardize(st);
int count=0;
if (str.equals("")) { return count;
count = 1; }
for (int i = 0; i < str.length(); i++) { if (str.charAt(i) == ' ') { count++; } } return count; } }
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 StringService cho một đối tượng thuộc lớp StringClass 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("StringService", new StringClass()); 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_XuLyXau_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: