Java RMI 导出子class : class 转换异常

Java RMI export subclass : class cast exception

我有一个应用程序检测到某些 classes 是 RMI 可导出的,并导出它们。可导出的 classes 应该实现一个接口,该接口将出现在 RMI 客户端上以进行转换并使存根可用。 然后我执行以下代码(使用 CGLIB)导出 class :

public void bind(Object objectInstance) {

    try {

        Enhancer classEnhancer = new Enhancer();
        classEnhancer.setSuperclass(objectInstance.getClass());
        classEnhancer.setInterfaces(new Class[]{Remote.class});
        classEnhancer.setCallback(new MethodInterceptor() {
            @Override
            public Object intercept(Object obj, Method method, Object[] args, MethodProxy methodProxy) throws Throwable {
                return methodProxy.invokeSuper(obj, args);
            }
        });
        Object proxy = classEnhancer.create();

        Remote stub =
                (java.rmi.Remote)UnicastRemoteObject.exportObject((Remote)proxy, 0);
        Registry registry = LocateRegistry.getRegistry();
        registry.rebind("Object", stub);
        System.out.println("object instance bound");
    } catch (RemoteException e) {
        System.out.print("error : " + e.getMessage());
        e.printStackTrace();
    } catch (Throwable t) {
        t.printStackTrace();
    }
}

当我 运行 应用程序并连接到 RMI 浏览器时,我可以看到存根实现的唯一接口是 java.rmi.Remote。原始对象实现的接口没有被远程对象实现。真的是这样吗,还是我漏了什么?

我正在 JDK 1.8.0_31 Mac pro 运行ning Yosemite

一本书上

我正在创建一个实现了 java.mi.Remote 接口的 class,希望存根也能实现它。那样不行。远程对象必须至少实现一个扩展远程的接口。