2016-10-27 12 views
1

以前の投稿を読みましたが、同様の質問が表示されましたが、問題の解決策を見つけることができませんでした。私のアプリケーションのユーザーで は、ファイルをダウンロードすることができ、したがって、ユーザーは、ダウンロードをクリックしたときに我々のアプリケーション・サーバーは、内部的に以下のようなXML応答にファイルデータを送信するWebサービスとの認証済みセッションまでの設定:webserviceから大きなファイルをダウンロードしてアプリケーションパフォーマンスの問題が発生しました

<FileSerial xmlns="http://my.example.com/webservices"> 
    <filedata>base64Binary</filedata> 
    <filesize>int</filesize> 
    <filetype>string</filetype> 
    <mime_type>string</mime_type> 
</FileSerial> 

そしてI複数のユーザーが私たちのアプリケーション・サーバーのJVMのメモリが非常に高くなっダウンロードをヒットし、アプリケーションサーバが応答して再起動する必要はありません後

GetDocResponse docResponse = (GetDocResponse) webServiceTemplate.marshalSendAndReceive(getDoc); 
FileSerial fileSerial = docResponse.getGetDocResult(); 
fileByte = fileSerial.getFiledata(); 

春-WS以下のようにを使用しています。 私の推測では、fileByteがアプリケーションサーバーのメモリに格納されているため、それが原因です。

アプリケーションサーバーのメモリに格納せずに直接クライアントブラウザにストリームする方法はありますか。

サンプルコードはいずれも役に立ちます。

答えて

1

ヒープ上の完全なドキュメントと、base64への変換をロードしています。バイナリデータから他のオブジェクトへのマップを参照ごとにコピーしないと、ヒープ上に別のエントリが作成されます。

あなたは、マルチパートリクエストを使用し、WSの添付ファイルとしてドキュメントを送信する必要があります MTOM example

要求
関連する問題