我想有关于RMI理论确认。
让我们假设客户端A请求到服务器B.对象O的远程引用
那么,现在如果在O接口(INTERF)有等的方法:无效美孚(INTERF OBJ);
当客户A调用O.foo(O)它通过存根引用(接收之前),然后服务器不使用其本地参考,但存根对象(由客户端接收的),因此通过服务器上的O方法每次通话将利用它的TCP / IP服务。
可以吗?
你应该感到自由,如果你认为那些能提高我的理解RMI添加一些细节。
问候
我想有关于RMI理论确认。
让我们假设客户端A请求到服务器B.对象O的远程引用
那么,现在如果在O接口(INTERF)有等的方法:无效美孚(INTERF OBJ);
当客户A调用O.foo(O)它通过存根引用(接收之前),然后服务器不使用其本地参考,但存根对象(由客户端接收的),因此通过服务器上的O方法每次通话将利用它的TCP / IP服务。
可以吗?
你应该感到自由,如果你认为那些能提高我的理解RMI添加一些细节。
问候
CORBA服务器(如用于实施RMI / IIOP,不RMI / JRMP)典型地实施“共置存根”优化。 也就是说,如果一个服务器调用关于驻留在相同的处理的对象的存根方法,该CORBA服务器将典型地避免TCP / IP和线程池调度开销。 相反,参数被复制,该方法将在目标对象上被调用,并且将结果对象被复制并返回。
作为参考,Java服务器通常实现这种优化。 生成的存根类使用Util.isLocal方法,以确定是否一个目标存根是本地的。 接下来,存根。 _servant_preinvoke被调用,以获得参考/代理到本地仆人, Util.copyObjects (或Util.copyObject)用于复制的参数和返回的对象。 (还有其他与异常处理,RemarshalException等复杂问题,但我已经概述的基本流程。)