Đang chuẩn bị nút TẢI XUỐNG, xin hãy chờ
Tải xuống
Java RMI hỗ trợ gọi phương thức từ xa trên các đối tượng trong các máy ảo khác nhau. Nó tích hợp mô hình đối tượng phân tán vào Java và làm cho sự khác biệt giữa mô hình đối tượng phân tán và mô hình đối tượng cục bộ không có sự khác biệt. Trong chương này chúng ta sẽ tìm hiểu về quá trình và phương thức hoạt động của mô hình Java RMI, mời các bạn tham khảo. | Java RMI Mục đích Hỗ trợ gọi phương thức từ xa trên các đối tượng trong các máy ảo khác nhau Tích hợp mô hình đối tượng phân tán vào Java Làm cho sự khác biệt giữa mô hình đối tượng phân tán và mô hình đối tượng cục bộ không có sự khác biệt. Tạo ra các ứng dụng phân tán có độ tin cậy một cách dễ dàng Duy trì sự an toàn kiểu được cung cấp bởi môi trường thời gian chạy của nền tảng Java Mô hình gọi đối tượng từ xa - RMI Local Machine (Client) SampleServer remoteObject; int s; s = remoteObject.sum(1,2); System.out.println(s); Remote Machine (Server) public int sum(int a,int b) { return a + b; } 1,2 3 Kiến trúc RMI Java RMI Layers TCP Remote Reference Layer Transport Layer Java Virtual Machine Client Object Remote Reference Layer Transport Layer Java Virtual Machine Stub Remote Object Skeleton The Stub and Skeleton Mô hình các đối tượng phân tán Remote RemoteServer RemoteObject RemoteException IOException UnicastRemoteObject Interfaces classes extension implementation Object Stub Remote Interface Server Impl Các bước tạo RMI 1. Định nghĩa giao diện 2. Phát triển đối tượng bằng cách cài đặt giao diện remote 3. Phát triển chương trình client, server. 4. Biên dịch tập tin java. 5. Tạo ra đối tượng stub và skeleton. 6. Khởi động RMI registry. 7. Chạy các đối tượng remote server 8. Chạy client Bước 1. Định nghĩa giao diện /* SampleServer.java */ import java.rmi.*; public interface SampleServer extends Remote { public int sum(int a,int b) throws RemoteException; } Bước 2. Phát triển đối tượng bằng cách cài đặt giao diện remote /* SampleServerImpl.java */ import java.rmi.*; import java.rmi.server.*; import java.rmi.registry.*; public class SampleServerImpl extends UnicastRemoteObject implements SampleServer{ SampleServerImpl() throws RemoteException { super(); } public int sum(int a,int b) throws RemoteException { return a + b; } } Bước 3. Phát triển chương trình client. import java.rmi.*; import java.rmi.server.*; public class SampleClient{ public static void main(String[] args){ // set the security manager for the client System.setSecurityManager(new RMISecurityManager()); try{ //get the remote object from the registry System.out.println("Security Manager loaded"); String url = "//localhost/SAMPLE-SERVER"; SampleServer remoteObject = (SampleServer)Naming.lookup(url); System.out.println("Got remote object"); System.out.println(" 1 + 2 = " + remoteObject.sum(1,2) ); } catch (RemoteException exc) { System.out.println("Error in lookup: " + exc.toString()); } catch (java.net.MalformedURLException exc) { System.out.println("Malformed URL: " + exc.toString()); } catch (java.rmi.NotBoundException exc) { System.out.println("NotBound: " + exc.toString()); } }} Bước 3. Phát triển chương trình server. /* SampleServerImpl.java */ public static void main(String args[]){ try { System.setSecurityManager(new RMISecurityManager()); //set the security manager //create a local instance of the object SampleServerImpl Server = new SampleServerImpl(); //put the local instance in the registry Naming.rebind("SAMPLE-SERVER" , Server); System.out.println("Server waiting."); } catch (java.net.MalformedURLException me) { System.out.println("Malformed URL: " + me.toString()); } catch (RemoteException re) { System.out.println("Remote exception: " + re.toString()); } }