局限:僅支持 Java 對象互通,非 Java 系統需 JNI/CORBA 橋接。
| 組件 | 職責 | 關鍵操作 |
|---|---|---|
| Stub (客戶端代理) | 本地代表遠程對象 | 1.建立連接 2.參數編組 3.等待結果 4.解編返回值/異常 5.返回調用者 |
| Skeleton (服務端分發器) | 分發調用到實際對象 | 1.解編參數 2.調用實現方法 3.編組結果返回 |
JDK 1.2+ 無需 Skeleton,由反射直接分發。Stub/Skeleton 由 rmic 編譯器生成。
Serializable 或 ExternalizablewriteObject/readObject)Remote, 方法拋 RemoteException)Naming.lookup() 獲取引用)javac 編譯所有源文件rmic 生成 Stub/Skeletonrmiregistry[Applet 客戶端] --RMI--> [應用服務器/遠程對象] --JDBC (jConnect)--> [Sybase 數據庫]
RecSet 對象RecSetJDBC ResultSet 不可序列化,需轉換為自定義 RecSet(實現 Serializable),包含列元數據與數據矩陣。
java.rmi.server.codebase)RemoteException,區分通信失業與業務異常RMI 是構建 Pure Java 分布式系統的核心技術,通過 Stub/Skeleton 隱藏網絡細節,配合序列化實現對象級透明遠程調用。三層架構案例展示了 Applet/Web/RMI/JDBC 的完整集成,為企業級應用提供了經典參考模式。