私のコードは、バックエンド サーバーからファイルをダウンロードします。数百万のレコードを取得するため、Struts2 execAndWait
Interceptor を使用しました。これをテストするために、30 秒の遅延を挿入しています。遅延を挿入せずにファイルをダウンロードできますが (テスト データが非常に小さい場合)、挿入後にファイルを取得できません。<meta-refresh>
ログは、入力ストリームが入力されていても、待機ファイルで 5 秒のためにアクション クラスが繰り返し実行されていることを示しています。
そのような行動の理由は何でしょうか?
コードのセットアップ:
Struts.xml:
<action name="file-download" class="com.company.namespace.test.TestDownloadActionClass">
<interceptor-ref name="defaultStack" />
<interceptor-ref name="execAndWait">
<param name="delay">10000</param>
<param name="delaySleepInterval">500</param>
</interceptor-ref>
<result name="wait" type="freemarker" >/dir/resources/First-Page.ftl</result>
<result name="error" type="freemarker" >/dir/resources/Error-Page.ftl</result>
<result name="success" type="stream">
<param name="contentDisposition">attachment; filename="${downloadFilename}"</param>
<param name="contentType">application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</param>
<param name="inputName">inputStream</param>
<param name="bufferSize">1024</param>
</result>
</action>
PS:このコードを何百万ものデータセットでテストしていません。テストデータは少数のデータのみで構成されています。