Java: Доступ к файлу свойств в войне

Я уже искал StackOverflow "свойства в войне", но ни один из результатов не работал на мой случай.

Я использую Eclipse Galileo и GlassFish v3 для разработки ряда веб-сервисов. Я использую "динамический веб-проект" со следующей структурой

Src
-java_code_pkg_1
-java_code_pkg_2
-com.company.config
--configfile.properties WebContent
-META-INF
-WEB-INF
--log4jProperties
--web.xml
--applicationContext.xml
--app-servlet.xml

Я хочу получить доступ к "configfile.properties" в одном из исходных файлов в "java_code_pkg1". Я использую Платформу Spring, и этот файл инстанцируют, после того как приложение запускается на сервере.

Я попробовал следующее без удачи

getResourceAsStream("/com.company.config/configfile.properties");
getResourceAsStream("/com/company/config/configfile.properties");
getResourceAsStream("com/company/config/configfile.properties");
getResourceAsStream("/configfile.properties");
getResourceAsStream("configfile.properties");

getResourceBundle(..) didn't work either.

Действительно ли возможно получить доступ к файлу, когда это не находится под путем WEB-INF/classes? раз так затем, как?

Спасибо

8
задан del.ave 20 July 2010 в 15:06
поделиться

4 ответа

Properties props = new Properties();
props.load(this.getClass().getResourceAsStream("/com/company/config/file.properties"));

работает, когда я нахожусь в режиме отладки. Я могу видеть значения в отладчике, но получаю исключение NullPointerException сразу после выполнения строки «props.load» и перед тем, как перейти к свету под ней.

Это другой вопрос. По крайней мере, теперь я знаю, что это способ доступа к файлу конфигурации.

Спасибо за вашу помощь.

8
ответ дан 5 December 2019 в 08:50
поделиться

Если вы участвуете в войне, ваш "текущий каталог" пути к классам - "WEB-INF / classes". Просто поднимитесь на два уровня.

getResourceAsStream("../../com/company/config/configfile.properties");

Это ужасно, но работает. По крайней мере, он работает под tomcat, jboss и geronimo и работает сегодня .

П.С. Ваша структура каталогов не очень ясна. Возможно, это так:

getResourceAsStream("../../com.company.config/configfile.properties");
7
ответ дан 5 December 2019 в 08:50
поделиться

Вы уверены, что файл включается в ваш военный файл? Во многих случаях процесс сборки войны отфильтровывает файлы не .class.

1
ответ дан 5 December 2019 в 08:50
поделиться

Каков путь после его развертывания на сервере? Сканер можно использовать для ручного чтения в ресурсе. Из файла Java в пакете, создав новый Файл(".. /applications/") получит файл, указывающий на {glassfish install}\domains\{domain name}\applications. Может быть, вы могли бы изменить этот путь к файлу, чтобы направить вас туда, куда вам нужно идти?

0
ответ дан 5 December 2019 в 08:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: