Java RMI - 何时创建 stub 、启动注册表并指定代码库?

标签 java rmi

何时创建 stub 、启动注册表并指定代码库?

我已经创建了一个 RMI 应用程序。我的简单应用程序有效。我的客户端和服务器包的构建路径中有 RemoteObjInterface.class 的包。我首先启动服务器应用程序,然后启动客户端应用程序。

但是,我查看了互联网上的其他示例,发现它们启动注册表、创建 stub 并指定代码库。

以下是我的程序:

RemoteObjInterface.class”是我的接口(interface),“RemoteObjImplementation.class”是我的服务器,“Client.class”是我的客户端。

public interface RemoteObjInterface extends Remote {
    public String someMethod() throws RemoteException;
        }
<小时/>
public class RemoteObjImplementation extends UnicastRemoteObject implements
    RemoteObjInterface {
   private static final long serialVersionUID = 1L;
   private static final int PORT = 1099;
   private static Registry registry;

public RemoteObjImplementation() throws RemoteException {
    super();
    }

@Override
public String someMethod() throws RemoteException {

    return new String("Hello");
    }

public static void main(String args[]) {

    Registry registry = LocateRegistry.createRegistry(PORT);

    registry.bind(RemoteObjInterface.class.getSimpleName(),
            new RemoteObjImplementation());

     }
}
<小时/>
public class Client {
    private static final String HOST = "localhost";
    private static final int PORT = 1099;
    private static Registry registry;

public static void main(String[] args) throws Exception {

registry = LocateRegistry.getRegistry(HOST, PORT);

 RemoteObjInterface remoteApi = (RemoteObjInterface) registry.lookup(RemoteObjInterface.class.getSimpleName());

    System.out.println("Message = " +
            remoteApi.someMethod();

    }
}

最佳答案

When to create a Stub

创建 stub 是导出远程对象的副作用,如果远程对象扩展了 UnicastRemoteObject,那么创建 stub 又会产生副作用。

start Registry

当你想启动它的时候。例如,在开始调用 bind()rebind() 之前。

and specify Codebase?

您根本不需要使用此功能,它是可选的。如果您希望客户端能够动态下载类而不是提前将它们分发到客户端,请在导出任何远程对象(包括注册表)之前在服务器 JVM 中指定 java.rmi.server.codebase 系统属性,并确保它指向注册表和客户端均可访问的 URL。

关于Java RMI - 何时创建 stub 、启动注册表并指定代码库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15512267/

相关文章:

java - Chronicle Queue 可以像 RMI 一样使用吗?

java - 仅在 Eclipse 中存在反序列化问题

java - 如何为基于Java RMI的通信设置各种参数?

java - 扫描仪中的 NoSuchElementException

Java:帮助进行基本输出基本值算术。输出为0,不知道为什么?

java - 具有约束访问问题的通用类

java - 是否可以将 RMI 注册表作为守护进程运行

java - 数字签名 SunMSCAPI 提供商和 MS Crypto API

java - 尝试关闭控制台时输入不匹配错误

java - Java RMI 连接使用什么端口?