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

时间:2014-03-01 13:46:34

标签: java web-services

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

1 个答案:

答案 0 :(得分:9)

Stubs and Skeletons

  

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


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

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

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

     

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

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


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

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

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


Reference: