0

PDF ファイルをダウンロードしようとしていますが、ファイル サイズが 32,609 バイトを超えると例外が発生します。このダウンロードより小さいサイズ:

java.io.IOException: com.sshtools.j2ssh.connection.ConnectionProtocol の com.sshtools.j2ssh.connection.Channel.processChannelData(Channel.java:149) のチャネル データ ウィンドウ [scp] で許可されているよりも多くのデータを受信しました。 com.sshtools.j2ssh.connection.ConnectionProtocol.onMessageReceived(ConnectionProtocol.java:609) の onMsgChannelData(ConnectionProtocol.java:806) com.sshtools.j2ssh.transport.AsyncService.run(AsyncService.java:115) の

また、これは 1 つの環境でのみ発生しています。異なる jboss(appserver)、apache(webserver)、および linux(OS) 環境で同じコードが正常に動作します。ウィンドウ チャネル サイズを大きくしてこのエラーを修正できるサーバー レベルの設定はありますか?

感謝と敬意

4

1 に答える 1

1

API自体を変更することで問題を解決しました。channel.java クラスに if 条件が追加され、必要なサイズよりも小さい場合はサイズが大きくなりました。これが他の人に役立つことを願っていますが、これを修正するためにOSまたはサーバーレベルで構成があるかどうかを知りたい. 以下のコードは修正版です。

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 に答える