2014-11-19 1 views
-1

Я разработал JSP, который записывает PNG-файл в папку каталога развертывания. После записи содержимого, очистки, закрытия и синхронизации файла я пытаюсь показать его в том же JSP, используя тег, но большую часть времени, когда imatge не отображается на странице рендеринга в браузере (запрос возврата 404 Not Найдено ответ). Файл создан (я вижу файл в папке в системном проводнике).Файлы, написанные на странице JSP, не найдены Tomcat

Я использую Tomcat 8 в качестве веб-контейнера, и я выполняю webapp и Tomcat в Eclipse Luna IDE.

Может ли кто-нибудь мне помочь?

+0

Файловая система может накладывать блокировки на файлы, которые вы использовали недавно, и до тех пор, пока эти блокировки не будут выпущены, вы не сможете прочитать этот файл или повторно использовать другой процесс одновременно ... –

+0

имейте в виду, что если файл записывается в каталог 'WEB-INF', который вы не сможете запросить у него напрямую из браузера (IIRC). – ochi

ответ

1

Я считаю, что это есть ответ в несколько иной форме:

Tomcat 7 returns "304 Not Modified" on modified/non existent resource

Однако, так как вы, вероятно, только генерировать свои PNG файлы один раз (или, возможно, не очень часто), то есть ИМО действительный кейс.

Поскольку Tomcat делает кеширование, я думаю, что вы можете рассмотреть возможность использования cachingAllowed="false" на вашем <Context>. Обратите внимание, что вы, скорее всего, заметите небольшое снижение производительности, поскольку Tomcat будет собираться на диск для каждого статического запроса вместо того, чтобы обращаться к его кешу.

У вас также есть возможность написать собственный сервлет, чтобы обслуживать автоматически сгенерированные файлы PNG непосредственно с диска. Может быть сложно написать собственный сервлет со статическими ресурсами со всеми колоколами и свистами, поддерживаемыми Tomcat DefaultServlet, но вы можете многое пропустить и просто всегда обслуживать весь файл независимо от запросов клиентов.

+0

Большое спасибо. Я ничего не знал о опции Tomcat «cachingAllowed». Я попробую. –

Смежные вопросы