Вкладывание Jsch в пул соединений в деталях

Я положил Jsch в общий пул (с поддержкой Spring Pool) с первоначальным успехом

http://docs.spring.io/spring/docs/3.2.4.RELEASE/spring-framework-reference/htmlsingle/

Тем не мение:

  1. Должны ли мы объединять каналы в сеансе вместо объединения сеансов? Каждый сеанс Jsch создает один поток. Объединение сессий Jsch создаст x потоков. Объединяя каналы, действительно будет только один поток Jsch.

  2. (commons-pool), что произойдет, если сессия Jsch устарела? Как восстановить сеанс в контексте commons-pool или используя поддержку весеннего пула? Как определить, устарел ли он?

Спасибо

2 ответа

Разобрался со своим вопросом. Я поделюсь своим проектом на следующий день или два.

  1. Пулы каналов гораздо эффективнее. Нет необходимости создавать несколько сеансов (если сеанс подключается к одной и той же конечной точке sftp).

  2. Я реализовал пул соединений JSch (пулы каналов) с весенним пулом и общим пулом. Я отправлю сообщение на GitHub на следующий день или два. Самый важный вопрос: что, если связь устарела?

Я обнаружил, что на основе моей реализации 1 сеанса - несколько каналов, и если соединение устарело, объекты пула (в данном случае канал) будут устаревшими. Объединенный в пул объект должен быть признан недействительным и удален из пула. Когда соединение восстанавливается и когда новый поток приложения "заимствует" из пула, создаются новые объекты пула.

Чтобы подтвердить мои наблюдения, мой не очень автоматизированный тест:

a) Создайте набор (скажем, 10) потоков приложений, извлекающих ресурсы канала из пула. б) заставьте поток спать 20 секунд; в) создайте другой набор потоков приложений, проверяя ресурсы канала из пула.

На а) установите точку останова, когда i==7, разорвите соединение с помощью "iptable drop (linux) или pfctl -e; pfctl -f /etc/pf.conf (mac, google, как это сделать!)". Этот первый набор потоков приложений получит исключение, потому что канал не работает.

На б) перезапустите соединение

На этапе c) второй набор потоков приложения будет успешно завершать операцию, поскольку разорванное соединение было восстановлено.

Извините, что нашел время... Ни в коем случае я не игнорирую значение этого.

Да да... Представляем

https://bitbucket.org/adubflow/sftpconnectionpool/wiki/Home

Ждем ваших комментариев, отзывов, чтобы я мог улучшить.

С уважением,

Другие вопросы по тегам