Вызов функции при закрытии сервера RMI - PullRequest
0 голосов
/ 10 марта 2019

Я работаю над приложением 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));
}

Я знаю, что это не лучший вариант, но я не нахожусь в качестве оптимального или следующего соглашения. Однако, если есть совершенно другой способ сделать то, что я хочу, я открыт для предложений.

1 Ответ

0 голосов
/ 11 марта 2019

В конце концов, я добавил хук отключения, который удовлетворял мои потребности в этом проекте.

...