何时在RMI中创建骨架对象?

时间:2013-08-17 16:11:35

标签: java rmi

在书中,我读到当我们使用rmic编译实现类时,它会创建两个对象:stub和skeleton。但是当我编译服务器端实现类时,它只创建一个存根对象文件。代码是:

import java.rmi.*;
import java.rmi.server.*;

public class ServerImp extends UnicastRemoteObject implements testRmi
{
    ServerImp() throws RemoteException
    {
    }

    public void getText(String gt) throws RemoteException
    {
        System.out.println(gt);
    }
}

有人可以在创建骨架文件时告诉我吗?

2 个答案:

答案 0 :(得分:3)

从rmic 1.2开始,Java不再生成骨架类。 RMI支持的新JRMP协议已经摆脱了骨架文件的使用。

  

远程对象的框架是JRMP协议服务器端实体   它有一个方法调用实际的远程对象的调用   实施

答案 1 :(得分:2)

在JDK 1.2(1998年发布)中,骷髅被普通的服务器端调度代码所取代。静态生成的存根被JDK 5(2004年发布)中的动态代理替换。不再需要使用rmic生成存根以通过JRMP运行RMI。 (但请注意,使用IIOP仍然需要rmic。)

我对stackoverflow上询问rmic,存根和骨架的问题数量感到震惊。人们必须查看非常旧的书籍和非常过时的网络教程。如果将链接发布到其中一些链接以便联系作者来更新或删除过时的信息,将会很有帮助。

也许应该弃用旧的存根支持。这可能有助于避免混淆。


编辑:哦,我想也许我也应该回答这个问题。 : - )

Edit2:删除了关于UnicastRemoteObject构造函数的错误陈述。

不再需要静态生成的骨架。在上面的代码中,您的远程对象扩展为UnicastRemoteObject。构造对象时,将调用UnicastRemoteObject构造函数。这会将对象挂接到处理套接字侦听和远程方法分派的RMI内部基础结构。换句话说,它“导出”了对象。