将方法中的远程对象传递给RMI服务器?

时间:2011-10-20 19:54:48

标签: java rmi

我有一个连接到某个RMI服务器的RMI客户端只是为了让它知道它可以使用这个新客户端。

我可以直接传递一些Remote对象,以便:

serverRemoteObject.registerClient(theClientRemoteObjectTheServerShouldUse);

实际上会给服务器一些他可以使用的对象,而无需连接到我的客户端? 以下问题说这是可能的,但没有给出真实的例子:

Is it possible to use RMI bidirectional between two classes?

安德鲁

1 个答案:

答案 0 :(得分:4)

是的,你可以。这就是在RMI情况下回调的工作原理。您将对象发送到服务器,当服务器调用对象上的方法时,它将在“客户端”JVM中执行,而不是在服务器上执行。查看UnicastRemoteObject.export方法,将实现Remote接口的任何对象导出为可以传递给服务器的远程对象。

interface UpdateListener extends Remote {

  public void handleUpdate(Object update) throws RemoteException;

}

class UpdateListenerImpl implements UpdateListener {

  public void handleUpdate(Object update) throws RemoteException {
  // do something
  }

}

//somewhere in your client code
final UpdateListener listener = new UpdateListenerImpl();
UnicastRemoteObject.export(listener);