Как использовать какой-нибудь файл конфигурации для сервлета Java EE? - PullRequest
1 голос
/ 07 октября 2009

Мне нужно получить доступ к некоторым файлам на серверах из сервлета. У них разные пути на моей машине разработки и на сервере развертывания. Я хотел бы поместить куда-нибудь файл конфигурации (с путями) (например, shared dir в развертывании capistrano), чтобы приложение могло его прочитать. Или, может быть, установить какое-либо свойство на сервере приложений или что-то в этом роде. Я могу использовать Tomcat, Jetty или Glassfish.

В настоящее время я создал конфигурационный файл в WEB-INF с конфигурацией для локальной машины. Сценарий развертывания, который копирует .war на сервер, изменяет файл war, помещая файл конфигурации сервера внутрь. Это работает, но не слишком хорошо, и если что-то меняется с путями на сервере, мне придется изменить локальный файл и заново развернуть приложение.

Можете ли вы предложить лучшее решение?

Ответы [ 3 ]

2 голосов
/ 07 октября 2009

Здесь, в SO, есть пара похожих вопросов. Это - это тот, который я нашел, я помню, что есть и другие.

В любом случае, эта ссылка из приведенного выше ответа может быть полезной.

Сводка ваших вариантов:

  • Если у вас есть база данных, храните ваши настройки там.
  • Вы также можете использовать JNDI для непосредственного хранения ваших свойств или пути к файлу конфигурации.
  • Вы можете использовать переменную окружения для хранения пути к файлу конфигурации.
1 голос
/ 20 января 2010

Я согласен с kgiannakakis, но есть и некоторые ограничения - Хранение свойств / конфигураций xml в базе данных, безусловно, вариант но не всегда выполнимо, особенно если это ресурс без свойств, такой как XML. - JNDI посмотреть вверх - это удар по производительности и вы не можете хранить там и XML - Если у вас есть несколько копий приложение, развернутое на том же сервере, переменные окружения не могут быть использованы. - Все вышеперечисленное не может быть использовано для что-то вроде MyClass.getResourceAsStream()

.

Если вышеупомянутое решение в порядке, тогда хорошо, в противном случае вы можете использовать концепцию разделяемых библиотек. Я не уверен, как он работает с серверами приложений, о которых вы упомянули, но ниже приведены ссылки на Geronimo, WASCE, IBM Websphere Концепция заключается в том, что во время развертывания вы указываете дополнительный путь к классу для вашего EAR.

Джеронимо http://cwiki.apache.org/GMOxDOC21/configuring-geronimo-eclipse-plugin-to-publish-maven-dependencies-as-shared-library.html

WASCE 2.1.0 http://publib.boulder.ibm.com/wasce/V2.1.0/en/shared-library.html

IBM Websphere http://publib.boulder.ibm.com/infocenter/wasinfo/v5r1//index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/rxml_library.html

1 голос
/ 07 октября 2009

Обычный способ сделать это - настроить ваши зависимости внутри контейнера сервлета и выставить их через JNDI . В вашем случае достаточно было бы просто указать строку с путем.

Учебное пособие JNDI и Документы Tomcat по JNDI должно помочь вам начать работу. JNDI также прекрасно интегрируется с Spring, если вы используете контейнер Spring IOC.

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