У меня следующая проблема, я пишу файл Excel в C:\Tomcat85\webapps\MyWebApp\Excel\myExcel.xls
.
Как только мое Java-приложение заканчивает запись файла, оно выполняет загрузку, чтобы пользователь мог с ним работать. Это дает неприятную ошибку 404.
Если я подожду несколько секунд и перезагружу страницу, она будет загружаться нормально (или добавить пятисекундный сон в java, это работает так же).
Итак, я пришел к выводу, что Tomcat требуется 5 секунд, чтобы распознать, что этот новый файл Excel существует, и только тогда он может его обслужить.
Есть ли способ заставить Tomcat выполнять эту задачу быстрее? Возможно, используя некоторую конфигурацию в web.xml, чтобы по-разному обрабатывать эту папку «/Excel/».
Windows 10 64 бит, Tomcat 8.5, Java 7 (можно попробовать java8, но я не думаю, что это будет иметь значение).
Некоторый код:
new ExcelExport(remoteHandle, context).execute( outFileName, outMessage);
// Thread.sleep(5000);
httpContext.wjLoc = formatLink(outFileName);
- sleep комментируется или раскомментируется в зависимости от теста. Без сна получаю 404, со сном через 5 секунд работает нормально.
- httpContet.wjLoc просто выполняет загрузку, как ссылку на файл.
Wiriting работает нормально, так как я вижу его готовым и доступным для записи в проводнике, но если я попытаюсь открыть его по URL-адресу, я получу тот же 404.