Служите файлам из папки, отличной от контекстной директории в контейнере сервлета - PullRequest
0 голосов
/ 28 декабря 2011

У меня возникла ситуация, когда я должен обслуживать файлы из разных папок, а не из контекста, в котором работает мое веб-приложение. Например, предположим, что мое веб-приложение работает в контексте сервлета в «/ opt / tomcat / webapps / ROOT /», и я должен обслуживать файлы, существующие в «/ opt / my_other_folder /». Эти папки могут быть изменены во время выполнения клиентом, поэтому я не могу просто добавить новый контекст, указывающий на эти каталоги. Я хотел бы получить решение, которое бы мне не пришлось переписывать веб-сервер только для этого. Кроме того, продукт, над которым я работаю, является общим, поэтому у меня не может быть решения, специфичного для какого-либо контейнера сервлета.

Спасибо!

1 Ответ

0 голосов
/ 28 декабря 2011

Если вы обслуживаете только файлы, я бы подумал о том, чтобы снабдить ваш контейнер сервлета чем-то вроде Apache HTTP Server, где вы могли бы просто использовать его различные директивы для предоставления «виртуального каталога», указывающего на легко настраиваемое местоположение.

В противном случае вы можете написать и настроить стандартный Java-сервлет, который будет выполнять по сути одно и то же - сохранять фактический путь в файле свойств Java, который будет считан сервлетом. Но хотя это не много работы, было бы значительно больше работы, чем вышеупомянутое решение Apache HTTP Server. Это было бы очень похоже на несколько ответов, опубликованных на Сервлете для предоставления статического контента . В частности, вы можете использовать или расширить Apache Tomcat DefaultServlet . (Здесь используются некоторые специфичные для Tomcat классы, но их можно легко заменить общими эквивалентами.) http://balusc.blogspot.com/2009/02/fileservlet-supporting-resume-and.html выглядит даже ближе к тому, что вы искали, и он полностью универсальный - хотя все еще имеет некоторые дополнительные важные особенности.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...