关闭RMI服务器时调用功能



我正在处理具有许多服务器的Java RMI应用程序。这些服务器之一是类似LDAP的服务器,它可以跟踪其他服务器IP地址(以及其他一些信息):每次创建新服务器时,它都会立即连接到LDAP样式服务器,该服务器通过调用呼叫该服务器来存储其IP函数 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" termination"或在终端上使用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));
}

我知道这不是最好的选择,但是在这里,最佳或遵循惯例并不是我的重点。但是,如果有一种完全其他方法可以做我想做的事情,我就会接受建议。

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

最新更新