com.jcraft.jsch.JSchException: channel is not opened解决方案
2016-03-24 11:25
796 查看
在一个批量下载文件的程序时,发现下载的文件出错,最多只能下载10个文件,剩下的文件丢失了,查看代码,也没有逻辑上的错误,下载丢失也没报错
考虑到之前出现过前台页面传入后台的值丢失,然后在后台对前台输入的信息进行println,发现数据未丢失,也未传2次而多出null,
然后使用try,catch进行捕捉,查看日志发现在下载第十一个文件的时候总是失败
错误信息com.jcraft.jsch.JSchException: channel is not opened.,
可能原因默认的session时间有限制,然后对session时间进行获取
获取到的session时间是0,发现没什么问题,然后设置了一个长一点的时间试试
问题并没有解决
也可能是环境有问题,查看一下配置文件,可能是session有限制
查看sshd_config
在配置文件中有MaxSessions,原来是10,我把它改成了20,并去掉了“#”符号,保存后重启
然后重新运行工程,发现这次下载的是20个文件,没有丢失,又多试了几次,效果很理想,问题算是解决了吧,原来这里MaxSession默认是的10,所以只能最多连接10次。
//———————————————————————-
上述方法可以解决这个问题,但不是最好的,在原来的代码里存在bug,在这个方法里调用的另一个方法,只有开启,没有关闭,所以导致上述问题
考虑到之前出现过前台页面传入后台的值丢失,然后在后台对前台输入的信息进行println,发现数据未丢失,也未传2次而多出null,
Session session = connection.getSession(user, ip, port); ChannelExec channelExec = (ChannelExec) session.openChannel("exec"); channelExec.setCommand(cmd); channelExec.setInputStream(null); channelExec.setErrStream(System.err); channelExec.connect();
然后使用try,catch进行捕捉,查看日志发现在下载第十一个文件的时候总是失败
错误信息com.jcraft.jsch.JSchException: channel is not opened.,
可能原因默认的session时间有限制,然后对session时间进行获取
println("session timeout" + session.getTimeout())
获取到的session时间是0,发现没什么问题,然后设置了一个长一点的时间试试
session.setTimeout(600000);
问题并没有解决
也可能是环境有问题,查看一下配置文件,可能是session有限制
查看sshd_config
在配置文件中有MaxSessions,原来是10,我把它改成了20,并去掉了“#”符号,保存后重启
然后重新运行工程,发现这次下载的是20个文件,没有丢失,又多试了几次,效果很理想,问题算是解决了吧,原来这里MaxSession默认是的10,所以只能最多连接10次。
//———————————————————————-
上述方法可以解决这个问题,但不是最好的,在原来的代码里存在bug,在这个方法里调用的另一个方法,只有开启,没有关闭,所以导致上述问题
Channel channel = session.openChannel("sftp") channel.disconnect();//添加关闭
相关文章推荐
- kindeditor 批量上传 上传失败 thinkphp swfupload session
- 杰奇登录后的东西都是在session里面的
- ASP中SESSION无法保存问题的解决办法
- Oracle中的Connect/session和process的区别及关系介绍
- Node.js编程中客户端Session的使用详解
- 浅谈COOKIE和SESSION区别
- 解析PHP的session过期设置
- php中Session的生成机制、回收机制和存储机制探究
- php中将一个对象保存到Session中的方法
- 深入解析Session是否必须依赖Cookie
- 对比分析php中Cookie与Session的异同
- PHP Session机制简介及用法
- 新手菜鸟必读:session与cookie的区别
- 深入讲解PHP Session及如何保持其不过期的方法
- PHP Session变量不能传送到下一页的解决方法
- PHP中的session永不过期的解决思路及实现方法分享
- php session实现多级目录存放实现代码
- *.ashx文件不能访问Session值的解决方法
- ASP.NET中Session和Cache的区别总结