Файл свойств загрузки в сервлете Java, развернутом в JBoss как война

Мне развернули сервлет как войну в JBoss 4.0.2. У меня есть файл свойств для развертываемого приложения. Куда я должен поместить этот файл? В соответствии с conf каталогом в jboss server\default\conf папка? Как я загружаю тот файл свойств портативным способом?

8
задан Carlosfocker 6 January 2010 в 18:53
поделиться

4 ответа

Загрузить этот файл свойств портативным способом, лучшим способом будет поместить его в classpath веб-приложения (либо в JAR под WEB-INF/lib/ или под WEB-INF/классы/, либо в classpath сервера приложений, если вы хотите иметь возможность редактировать этот файл без переупаковки веб-приложения) и использовать Class#getResourceAsStream(String).

Следующий код получает InputStream для файла свойств, который находится в том же пакете, что и сервлет, в котором выполняется код:

InputStream inStream = Thread.currentThread().getContextClassLoader()
                 .getResourceAsStream("myfile.properties");

Затем, load(InputStream) it в Properties object (пропуская обработку исключений):

Properties props = new Properties();
props.load(inStream);
17
ответ дан 5 December 2019 в 06:37
поделиться
[

] Лучшее место для размещения - под собственным doc-root web-приложений, например "./WEB-INF/myapp.properties", т.е. относительно того, где контейнер сервлета распаковал ваш [].war[] или [].ear[] файл. Вы можете предоставить файл свойств непосредственно в файле [].war[].[

] [

] В []ServletContext[] есть метод []getRealPath(String path)[], который возвращает реальный путь в файловой системе. Используя реальный путь, вы можете загрузить его в коллекцию []Properties[].[

] [

][]Update[]. Код в вашем комментарии пытается найти реальный путь к "/", вы должны спросить относительный путь к вашему файлу свойств, так как в:[

] [
String propertiesFilePath = getServletContext().getRealPath("WEB-INF/application.properties");
Properties props = properties.load(new FileInputStream(propertiesFilePath));
]
1
ответ дан 5 December 2019 в 06:37
поделиться

Просто возьмите servletContext и тогда

InputStream stream = getServletContext().getResourceAsStream("/WEB-INF/log4j.properties");
Properties props = new Properties();
props.load(stream);

Это всегда будет работать, независимо от того, развертываете ли вы войну или взрывную войну.

5
ответ дан 5 December 2019 в 06:37
поделиться

Если файл свойств может быть развернут вместе с приложением, сделайте его частью дерева исходных текстов. В результате файл свойств окажется в папке WEB-INF/классы.

Это можно прочитать, используя

Properties properties = loadProperties("PropertyFileName.properties", this.getClass());
...

public static Properties loadProperties(String resourceName, Class cl) {
    Properties properties = new Properties();
    ClassLoader loader = cl.getClassLoader();
    try {
        InputStream in = loader.getResourceAsStream(resourceName);
        if (in != null) {
            properties.load(in);
        }

    } catch (IOException e) {
        e.printStackTrace();
    }
    return properties;
}
2
ответ дан 5 December 2019 в 06:37
поделиться
Другие вопросы по тегам:

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