Я использую sshj для подключения к удаленным машинам для получения различных значений.Как я понимаю в sshj, когда я выполняю следующий код для получения имени хоста удаленного компьютера:
SSHClient sshClient = new SSHClient();
Session session = sshClient.startSession();
Command commandObject = session.exec("hostname");
Я знаю, что могу получить возвращаемые значения, захватив входной поток
session.getInputStream();
Проблема, с которой я, похоже, сталкиваюсь, заключается в том, что объект сеанса (и команда) спроектирован как способ «используй один раз, а затем выбрасывай».Итак, имея это в виду, я хочу закрыть сеанс, как только я закончу с ним, чтобы очистить ресурсы, т.е.
commandObject.close();
Однако из-за асинхронного характера sshj я не могу определитькогда возвращаемое значение доступно во входном потоке, так как, кажется, нет встроенной функции обратного вызова.
Единственный способ, которым я могу обойти эту проблему, - это спать в течение предварительно определенного периода перед проверкой.входящий поток.Однако я чувствую, что это всего лишь взлом, и я надеюсь, что есть лучшее решение для всего этого.
У кого-нибудь были подобные проблемы с использованием sshj?С какими возможными решениями?
Приветствия!