0

我正在尝试下载 pdf 文件并在文件大小大于 32,609 字节时出现异常。尺寸小于此下载罚款:

java.io.IOException:接收到的数据多于 com.sshtools.j2ssh.connection.Channel.processChannelData(Channel.java:149) 上 com.sshtools.j2ssh.connection.ConnectionProtocol 上的通道数据窗口 [scp] 所允许的数据。 onMsgChannelData(ConnectionProtocol.java:806) 在 com.sshtools.j2ssh.connection.ConnectionProtocol.onMessageReceived(ConnectionProtocol.java:609) 在 com.sshtools.j2ssh.transport.AsyncService.run(AsyncService.java:115)

这也仅在一种环境中发生。相同的代码在不同的 jboss(appserver)、apache(webserver) 和 linux(OS) 环境下运行良好。是否有任何服务器级别设置可以增加窗口通道大小并修复此错误?

谢谢并恭祝安康

4

1 回答 1

1

通过更改 API 本身很好地解决了这个问题。在 channel.java 类中添加了额外的 if 条件,如果它小于要求则增加大小。希望这对其他人有所帮助,但我仍然想知道操作系统或服务器级别是否有任何配置可以解决此问题。下面的代码是修改后的版本。

if (msg.getChannelDataLength() > localWindow.getWindowSpace()) {

                // Increase the window space as needed and see what happens  
                long lDifference = msg.getChannelDataLength() - localWindow.getWindowSpace();  
                localWindow.increaseWindowSpace(lDifference+1);  

                if ( msg.getChannelDataLength() > localWindow.getWindowSpace() ) {  
于 2013-11-13T19:36:46.483 回答