RPC

Remote Procedure Call,远程过程调用。像本地调用方法一样调用一个远程方法。

概述

Java Remote Method Invocation,Java远程方法调用,一种用于实现远程过程调用的应用程序编程接口。

它使客户端上运行的程序可以调用远程服务器上对象的方法,也就是可以让某个JVM上的对象调用另一个JVM中对象上的方法,实现了Java程序之间跨JVM的远程通信。

客户端获取的是远程主机上对象的引用,无论何处使用引用,方法调用都发生在原始对象上

使用对象序列化

RMI实现了RPC,通常使用Java原生反序列化,并且可以结合动态类加载和安全管理器来安全的传输一个 Java 类

远程对象和非远程对象

非远程对象:在传递非远程对象时,它只是被复制

远程对象:术语远程意味着,通过一种可以通过网络传递特殊引用来使用对象,引用传递。

Stub和Skeleton

引入Stub(客户端根存)和Skeleton(服务端骨架)两个概念。

当你在远程对象上调用方法,实际上是调用一些本地代码作为该对象的代理。也就是当客户端试图调用一个远端对象,实际上会调用客户端本地的一个代理类,也就是Stub。而在调用服务端的目标类之前,也会经过一个对应的代理类,也就是Skeleton。它从Stub接收远程方法调用并将它们传递给对象

RMI架构

Untitled

远程接口