Связывание внешних файлов с веб-сервера Java - PullRequest
0 голосов
/ 18 октября 2011

У меня есть Java-сервлет, который по запросу обрабатывает данные и создает изображение.Потенциально могут быть миллионы изображений, и после их создания их не нужно повторно визуализировать, поэтому я бы хотел их кэшировать и избежать шага рендеринга, поскольку это довольно утомительно.

У меня работает кешированиехорошо, но проблема в том, что мне нужно, чтобы эти визуализированные изображения сохранялись между развертываниями моего веб-приложения, т. е. я не могу записать их в базу документов, иначе они будут уничтожены при повторном развертывании.

Что я делалиспользует атрибут «allowLinking» контекста, поскольку мое веб-приложение развернуто как файл war (context находится в META-INF / context.xml).Это несколько утомительно, потому что мне нужно разорвать символическую ссылку, прежде чем мое приложение будет развернуто, иначе изображения в ссылке будут уничтожены, но, похоже, это работает.

Но это работает только для Tomcat и при тестировании с JBoss(5.1) он, кажется, не соблюдает символическую ссылку и не позволяет ссылаться на что-либо за пределами docbase.Я думаю, что должен быть более практичный способ сделать это, который работает для всех веб-серверов Java.Чего мне не хватает?

1 Ответ

2 голосов
/ 18 октября 2011

Вы можете просто настроить сервлет, который будет обслуживать изображения из внешнего каталога.Этот сервлет должен будет просто извлечь имя или идентификатор файла изображения из запроса, прочитать файл из внешнего каталога и записать байты в выходной поток ответа сервлета (с соответствующим типом содержимого, установленным в ответе).

Или вы можете добавить интерфейсный сервер Apache httpd, который будет обслуживать статические изображения из какого-либо внешнего каталога, и делегировать свой контейнер сервлетов для других URL-адресов.

...