Presentation is loading. Please wait.

Presentation is loading. Please wait.

The Java Remote Method Invocation (RMI) – 遠端方法呼叫 Reference: Java 學習手冊 p.p. 381 井民全製作.

Similar presentations


Presentation on theme: "The Java Remote Method Invocation (RMI) – 遠端方法呼叫 Reference: Java 學習手冊 p.p. 381 井民全製作."— Presentation transcript:

1 The Java Remote Method Invocation (RMI) – 遠端方法呼叫 Reference: Java 學習手冊 p.p. 381 井民全製作

2 一個簡單的例子 : 執行遠端物件 server 傳回執行的結果 RmtServer 介面 : 提供 client 公共統一的 view MyServer 類別 : 實作出介面 client WorkRequest MyClient 類別 : 搜尋可執行的伺服器, 並執行 WorkRequest 物件 WorkRequest 類別 : 提供可以遠端執行的物件

3 RmtServer 介面 MyServer 類別 提供 client 端的可見的功能 實作出約定的功能 執行時 註冊名字 server C:\start rmiregistry Server 端

4 Client 端 Client 類別 client 尋找 Server 執行 Server 上物件的 method 使用 RmtServer 介面 操作遠端物件

5 被執行的物件類別 – WorkRequest.java 會在 Server 端列印 : 1 … 10000, 並且傳 回 ok 字串給 Client WorkRequest 類別 請同學練習一下

6 共用的部分 編譯與測試 檔案分布 Client MyClient.java 呼叫遠端物件 Server MyServer.java 提供執行 Work 的平台 遠端物件的介面 RmtServer.java 遠端執行物件 WorkRequest.java MyServer_Skel.class MyServer_Stub.class

7 編譯與測試 產生 stub 與 skeleton  Rmic MyServer  start rmiregistry (Unix 使用 rmiregistry&)  java MyServer  Javac MyClient.java

8 直接由指定位置下載程式執行 Server 可以藉由指定的位置下載程式碼  -Djava.rmi.server.codebase=“ 網址 ” 安全性的考量  因為是在 Server 上執行程式, 所以必須防 止惡意的 Client 搞怪  -Djava.security.policy=mysecurity.policy 安全策略檔名

9 程式架構 NewJob.class 瀏覽器 :192.168.0.100 client Server: 140.113.88.32 2. 請幫我執行 NewJob 工作 1. 上傳新版本的 NewJob 3. 固定索取 NewJob.class 動態 執行

10 程式架構 : 新增一個程式 client public class NewJob extends WorkRequest{ pubulic NewJob(Object p) { super(p); } public String execute(){ for(int i=0;i<10000;i++){ System.out.println(“ 目前是新的工作 i); } return "ok"; } } NewJob.java 繼承可遠端執行的物件 建構子 把原來要執行的工作覆蓋 (Override) 掉

11 程式架構 : 修改前面的程式 (Server 端 ) MyServer 類別 // 載入安全管理員 System.setSecurityManager(new RMISecurityManager()); 加入這段

12 設定安全策略檔 : mysecurity.policy java -Djava.rmi.server.codebase="http://192.168.0.100/RemoteExecute2/“ -Djava.security.policy=mysecurity.policy MyServer 注意 : 雙引號 grant { permission java.security.AllPermission; }; 授權 * 可使用 policytool 設定策略

13 程式架構 : 修改前面的程式 (Client 端 ) 要求 Server 執行遠端物件 NewJob Client 類別 System.out.println(server.execute(new NewJob(this))); 置換

14 實際的例子 外星人搜尋計畫 http://setiathome.ssl.berkeley.edu/ NewJob.class 瀏覽器 :192.168.0.100 SET 主機 A 電腦 : 執行搜尋外星人的工作 2. 依照指定範圍執行 搜尋任務 1. 上傳新版本的搜尋程式 3. 固定索取 最新版本 4. 傳回結果 B 電腦 : 執行搜尋外星人的工作 2. 依照指定範圍執行 搜尋任務 4. 傳回結果 3. 固定索取 最新版本

15 End Note: 阿方圖庫 fang0213@seed.net.tw 圖片來源 http://home.pchome.com.tw/good/fang600213/box.htm


Download ppt "The Java Remote Method Invocation (RMI) – 遠端方法呼叫 Reference: Java 學習手冊 p.p. 381 井民全製作."

Similar presentations


Ads by Google