我正在开发一个具有许多服务器的 Java RMI 应用程序。其中一个服务器是类 LDAP 服务器,它跟踪其他服务器的 IP 地址(和其他一些信息):每次创建新服务器时,它都会立即连接到存储其 IP 的类 LDAP 服务器,方法是调用函数connectToLDAP():
ArrayList<ServerInfo> computingServers = new ArrayList<ServerInfo>();
/**
* Adds a server to the LDAP to store its IP address
*/
@Override
public void connectToLDAP(int port, int q) throws RemoteException, Exception {
computingServers.add(new ServerInfo(RemoteServer.getClientHost(), port, q));
}
这样,服务器只需要连接到类似 LDAP 的服务器即可获取所有服务器 IP 的列表。
我的问题如下:当我运行新服务器 X 并连接到类似 LDAP 的服务器,然后我使用 Eclipse“终止”或Ctrl + C在终端上使用停止运行 X 的进程时,服务器 X 如何调用在退出之前执行下面的功能,以便类 LDAP 的服务器保持最新?
/**
* Removes a server from the LDAP
*/
@Override
public void removeServer(int port, int q) throws RemoteException, Exception {
computingServers.remove(new ServerInfo(RemoteServer.getClientHost(), port, q));
}
我知道这不是最好的选择,但优化或遵循惯例不是我的重点。但是,如果有完全其他的方式来做我想做的事,我愿意接受建议。
小怪兽爱吃肉
相关分类