Java:存根和骨架之间的区别

Gig*_*gal 4 java web-services

存根和骨架有什么区别?据我所知,存根使用java RMI和骨架没有.

Ram*_*ran 9

存根和骷髅

RMI使用标准机制(在RPC系统中使用)与远程对象进行通信:存根和骨架.远程对象的存根充当客户端的本地代表或远程对象的代理.调用者在本地存根上调用一个方法,该方法负责对远程对象执行方法调用.在RMI中,远程对象的存根实现远程对象实现的同一组远程接口.


调用存根的方法时,它会执行以下操作:

  • 启动与包含远程对象的远程JVM的连接,
  • marshals(写入和传输)参数到远程JVM,
  • 等待方法调用的结果,
  • unmarshals(读取)返回的返回值或异常,以及
  • 将值返回给调用者.

存根隐藏参数的序列化和网络级通信,以便向调用者提供简单的调用机制.

在远程JVM中,每个远程对象可能具有相应的骨架(在Java 2平台环境中,不需要骨架).

骨架负责将调用分派给实际的远程对象实现.


当骨架接收传入方法调用时,它执行以下操作:

  • unmarshals(读取)远程方法的参数,
  • 调用实际远程对象实现的方法,和
  • marshals(写入并发送)结果(返回值或异常)给调用者.

在Java 2 SDK,Standard Edition,v1.2中,引入了一个额外的存根协议,消除了在Java 2平台环境中对骨架的需求.相反,通用代码用于执行JDK1.1中的骨架执行的职责.存根和骨架由rmic编译器生成.


参考: