Java-第8章 RMI開始_第1頁
Java-第8章 RMI開始_第2頁
Java-第8章 RMI開始_第3頁
Java-第8章 RMI開始_第4頁
Java-第8章 RMI開始_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 第八章第八章 從從RMIRMI開始開始目目 錄錄基于RMI應用程序的剖析使用RMI注冊工作RMI與Socket的比較1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析 在RMI中不使用協(xié)議,客戶和服務器如何通信呢?服務器的服務信息,在遠程接口中以方法簽名的形式提供通過接口,服務器可以知道執(zhí)行什么方法以及接收和傳遞什么數(shù)據(jù)遠程接口定義服務器提供的方法,對客戶是可見的客戶可以通過查看遠程接口,了解服務器所提供的方法客戶通過RMI注冊表獲得遠程接口的引用注冊表是一個簡單的名字服務1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析 使用RMI創(chuàng)建分布式程序的步驟 定義一個遠程接口 實現(xiàn)遠

2、程接口和服務器 使用遠程接口開發(fā)一個客戶程序 產生樁和架構 啟動RMI注冊表1. 運行服務器和客戶程序1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(1)定義遠程接口遠程接口定義說明了服務器所提供的方法的特性,包括名字、參數(shù)類型遠程對象必須被聲明為public遠程接口擴展java.rmi.Remote.遠程接口中的每個方法必須拋出RemoteException異常1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(1)定義遠程接口 public interface Arith extends java.rmi.Remote int add(int a, int b) throw

3、s java.rmi.RemoteException;1. 1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(2) 實現(xiàn)遠程接口通過編寫一個類來執(zhí)行前面定義的接口步驟:指定要執(zhí)行的遠程接口定義遠程對象的成員器實現(xiàn)被遠程調用的方法創(chuàng)建一個安全管理器,并安裝它創(chuàng)建遠程對象的一個或多個實例1.注冊一個或多個遠程對象到RMI注冊表中1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(2) 實現(xiàn)遠程接口public class ArithImpl extends UnicastRemoteObject implements Arith private String name; public

4、 ArithImpl(String s) throws RemoteException super();name = s; public int add(int a, int b) throws RemoteException int c = new int10;for (int i=0; i10; i+) ci = ai + bi; return c; 1. 1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(2) 實現(xiàn)遠程接口public static void main(String argv) System.setSecurityManager(new RMISecurityMa

5、nager();try ArithImpl obj = new ArithImpl(ArithServer);Naming.rebind(“/localhost/ArithServer”, obj);System.out.println(ArithServer bound in registry);catch (Exception e) System.out.println(ArithImpl err: + e.getMessage();e.printStackTrace();1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(3)使用遠程接口開發(fā)客戶程序 public class Ar

6、ithApp public static String localHost() throws Exception InetAddress host = null;host = InetAddress.getLocalHost();System.out.println(host = +host.getHostName();return host.getHostName();1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(3)使用遠程接口開發(fā)客戶程序public static void main(String argv) int a = 1, 2, 3, 4, 5, 6, 7, 8, 9

7、, 9;int b = 2, 2, 2, 2, 2, 2, 2, 2, 2, 2;int result = new int10;try Arith obj = (Arith)Naming.lookup(/hostname/ArithServer);result = obj.add(a, b); catch (Exception e) System.out.println(ArithApp exception:+e.getMessage();e.printStackTrace();System.out.println(The sum of the arrays is: );for (int j=

8、0; j10; j+) System.out.print(resultj+ );8.1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(4) 產生樁和架構所有代碼編寫完后,需要產生樁和架構樁和架構是在運行時確定,需要動態(tài)裝載利用rmic編譯器產生樁和架構rmic rmic ArithImpl1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(4)產生樁和架構1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(5)啟動RMI注冊表RMI注冊表是一個名字服務器允許客戶程序獲得對遠程對象的引用1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(5)啟動RMI注冊表RMI注冊表

9、啟動方法rmiregistry & 默認端口為1099rmiregistry 5555 & 指定端口start rmiregistry windows下的啟動方法javaw rmiregistry如果注冊表指定了端口號,那么綁定對象時就需要指定端口號1.1.基于基于RMIRMI應用程序的剖析應用程序的剖析(6)運行服務程序和客戶程序2. 2. 使用使用RMIRMI注冊表工作注冊表工作(1)Registry包java.rmi.registry.Registryjava.rmi.registry.Registry bind()bind() list()list() lookup()lookup() rebind()rebind() unbind()unbind()java.rmi.registry. LocateRegistryjava.rmi.registry. LocateRegistry createRegistry()createRegistry() getRegistry()getRegistry()2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論