我正在处理具有许多服务器的Java RMI应用程序。这些服务器之一是类似LDAP的服务器,该服务器跟踪其他服务器的IP地址(以及其他一些信息):每次创建新服务器时,它都会立即连接到通过调用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“ Terminate”或在终端上使用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));
}
我知道这不是最佳选择,但最佳选择或遵循约定不是我的重点。但是,如果有其他方法可以完全满足我的需求,则可以提出建议。
答案 0 :(得分:0)
最后,我添加了一个足以满足该项目需求的关闭钩子。