java jsch api,java – 将Jsch放入连接池中的详细信息

我把Jsch放入了公共池(带有弹簧池支持)并取得了初步成功

然而:

>我们应该在会话中汇集频道而不是汇集会话吗?每个Jsch会话创建一个线程.池化Jsch会话将创建x个线程.汇集渠道,实际上只有一个Jsch线程.

>(commons-pool)如果Jsch会话变得陈旧会发生什么?如何在commons-pool的上下文中重新生成会话或使用spring pool支持?如何检测它是否陈旧?

谢谢

解决方法:

弄清楚我自己的问题.我将在第二天或第二天分享我的项目.

>汇集渠道更有效.实际上不需要创建多个会话(如果会话连接到同一个sftp端点).

>我实现了一个带弹簧池和公共池的JSch连接池(池化通道).我将在第二天或第二天发布到github.最重要的问题是,如果连接失效会怎样.

我发现基于我的1个Session的实现 – 多个通道,如果连接过时,池化对象(在这种情况下,通道)将是陈旧的.池化对象应该无效并从池中删除.当连接恢复时,当新的应用程序线程从池中“借用”时,将创建新的池对象.

为了验证我的观察,我的不那么自动化的测试:

a)创建一组(例如10个)app线程,从池中检出信道资源.

b)让线程睡20秒

c)创建另一组应用程序线程,从池中检出通道资源.

在a),当i == 7时设置断点,通过“iptable drop(linux)或pfctl -e; pfctl -f /etc/pf.conf(mac,google how to do!)”来断开连接.第一组应用程序线程将因为通道中断而异常.

在b),重新启动连接

在c),第二组应用程序线程将成功完成操作,因为已断开连接已恢复.

标签:java,multithreading,spring,jsch,apache-commons-pool

来源: https://codeday.me/bug/20190517/1121132.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值