如果我想在我的RMI应用程序中启用“双向”通信(即,允许服务器调用客户端上的方法,以及客户端调用服务器上的方法),是使客户端进入的最简单方法一个远程课程呢?
此外,如果我打算将我的客户端的实例作为方法参数传递给服务器,我认为没有必要将“客户端类”添加到rmiregistry吗?
最后一个问题,我的所有课程仍然需要在同一个地方编译吗? I.E我可以在两台完全独立的机器上编译服务器和客户端,并期望它们正常通信吗?
*编辑**
还有一个问题,我的问题引用了我的客户端接口(IClient):它有一个arraylist(所以我有ArrayList< IClient>)来存储客户端的新实例,以便服务器可以跟踪已注册的客户端.当我尝试在不同的机器上编译服务器时,它抱怨它无法找到IClient – 显然,因为IClient在客户机上.我该如何解决这个问题?
解决方法:
在你所有的假设中你是对的.
您不必将可远程调用的客户端类添加到rmi注册表,但仍需要导出它们.
编译的唯一警告是它们必须使用相同的编译器设置(至少那些影响RMI存根生成的版本)使用相同版本的java.