Я работаю над приложением 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-подобному серверу, а затем я останавливаю процесс, выполняющий X, используя Eclipse «Завершение» или используя 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));
}
Я знаю, что это не лучший вариант, но я не нахожусь в качестве оптимального или следующего соглашения. Однако, если есть совершенно другой способ сделать то, что я хочу, я открыт для предложений.