关闭 RMI 服务器时调用函数

Call function when closing RMI server

我正在开发一个有很多服务器的 Java RMI 应用程序。其中一个服务器是类似 LDAP 的服务器,它跟踪其他服务器的 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 的服务器,然后我停止进程 运行ning X 使用 Eclipse "Terminate" 或在终端上使用 Ctrl + C,服务器 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));
}

我知道这不是最佳选择,但成为最佳选择或遵循惯例并不是我关注的重点。但是,如果有完全不同的方法来做我想做的事,我愿意接受建议。

最后,我添加了一个关闭钩子,足以满足我对这个项目的需求。