Мой код загружает файл с внутреннего сервера. Поскольку мы будем извлекать записи, исчисляемые миллионами, мы использовали 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>
P.S. Я не тестировал этот код на миллионах наборов данных. Тестовые данные состоят только из нескольких данных.