Мой личный файл конфигурации среды в дополнение к web.xml. Возможный? - PullRequest
0 голосов
/ 02 ноября 2011

Простой вопрос на самом деле. Может ли веб-приложение получить доступ к файлу конфигурации, который я определил и поместил на уровне Tomcat-> Conf, или я ограничен только переменными среды web.xml?

Я подозреваю, что ответ "нет", поскольку для веб-приложения было бы довольно опасно получить доступ к чему-либо вне каталога веб-приложения.

Я не хочу использовать web.xml, так как не хочу, чтобы эта конфигурация попала в производственную среду. Он должен находиться исключительно в моем экземпляре dev tomcat. (Это всего лишь флаг, позволяющий мне обойти определенные функции, которые в dev чрезвычайно медленны и не критичны)

Кстати, это java / jsp webapp.

Ответы [ 3 ]

0 голосов
/ 02 ноября 2011

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

Для вашей проблемы вы можете использовать параметры инициализации контекста.Вы можете прочитать о них здесь: http://tomcat.apache.org/tomcat-5.5-doc/config/context.html.Вы можете получить к ним доступ, используя getServletContext().getInitParameter() в своем классе сервлетов.

Другой вариант - настроить переменную окружения на вашем компьютере разработчика и получить доступ к ее значению с помощью System.getenv().

0 голосов
/ 02 ноября 2011

Может ли веб-приложение получить доступ к файлу конфигурации, который я определил и поместил на уровне Tomcat-> Conf, или я ограничен только переменными среды web.xml?

Вы можете разместить конфигурационные файлы где угодно. Вам просто нужно знать его точное местоположение, тогда вы можете использовать один из миллиардов способов в Java для чтения ресурсов. Канонический подход заключается в том, чтобы поместить его в путь к классам или добавить его путь к пути к классам, чтобы вы могли просто прочитать его из пути к классам с помощью загрузчика классов. Подробнее см. Также этот ответ .


Я подозреваю, что ответ отрицательный, поскольку для веб-приложения было бы довольно опасно получить доступ к чему-либо вне каталога веб-приложения.

Это опасно, только если клиент может контролировать / изменять это поведение, соответствующим образом манипулируя HTTP-запросами. С правильно разработанными сервлетами это не должно быть возможным.


Я не хочу использовать web.xml, поскольку не хочу, чтобы эта конфигурация попала в производственную среду.

Я не уверен, понимаю ли я вашу озабоченность. По умолчанию клиенты не смогут видеть файл web.xml (на самом деле, целые папки /WEB-INF и /META-INF защищены от прямого доступа клиентов). Только если у вас плохо настроенный / написанный сервлет по умолчанию, есть вероятность, что клиенты смогут загрузить и увидеть файл web.xml.


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

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

0 голосов
/ 02 ноября 2011

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

Это обычная тактика для настройки сторонних компонентов, таких как Spring или Hibernate, и определения альтернативных баз данных для среды.

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