【问题标题】:Java rmi exporting an objectJava rmi 导出对象
【发布时间】:2015-04-30 17:01:39
【问题描述】:

我有一个问题:

我已经完成了一个具有 Map 对象的服务器。 我想用 rmi 注册来自服务器的那个对象,以便在任何地方都可以访问。我想要的 rmi 寄存器方法是 Map Get() 和 Set(Map)。第一个必须返回服务器的地图,第二个必须用新的地图更改服务器的地图。

非常感谢

【问题讨论】:

  • 糟糕的设计。每个客户端都将获得自己的副本,以自己的方式更新它,将其发送到服务器,并破坏前一个客户端的更新。它不会起作用。

标签: java dictionary rmi


【解决方案1】:

首先你必须定义一个像下面这样的接口:

public interface RmiMap extends Remote {
       Map<K, E> get() throws RemoteException;
       void set(Map<K, E> map) throws RemoteException;
}

重要的部分是Remote 接口和RemoteException。此外Map-Object 必须实现Serializable,所以我建议将Map-Object 封装在自己的对象中。

另一个类必须实现这个接口,然后在 RMI-Registry 注册这个实现。

LocateRegistry.createRegistry(Registry.REGISTRY_PORT);
Registry registry = LocateRegistry.getRegistry();

RmiMap stub = (RmiMap) UnicastRemoteObject.exportObject(RmiMapImplementation, 0);
registry.rebind("RmiMap", stub);

然后就可以从远程主机访问接口了。

RmiMap rmiMap = (RmiMap) remoteRegistry.lookup("RmiMap");

这应该让您简要介绍 RMI。

【讨论】:

  • JDK 中的大多数 Map 实现(如果不是全部的话)已经实现 Serializable.
猜你喜欢
  • 1970-01-01
  • 2011-04-12
  • 2020-04-04
  • 2015-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多