Загрузка свойств веб-приложения

Когда я создаю проект с помощью maven, все в порядке, но когда я развертываю его с помощью Tomkat, у меня есть NullPointerException. Класс, где может быть проблема - PropertiesManager. строка журнала: PropertiesManager.getApplicationProperties (PropertiesManager.java:31)

public class PropertiesManager {
    private static final String PROPERTY_FILE_NAME =
            "resources/application.properties";
    private static PropertiesManager Instance;
    private Properties properties;

    private PropertiesManager() {
    }

    public static PropertiesManager getInstance() {
        if (Instance == null) {
            Instance = new PropertiesManager();
        }
        return Instance;
    }

    public Properties getApplicationProperties() {
        if (properties == null) {
            properties = new Properties();
            try (InputStream stream = Thread.currentThread()
                    .getContextClassLoader()
                    .getResourceAsStream(PROPERTY_FILE_NAME)) {
                properties.load(stream);
            } catch (IOException e) {
                throw new ApplicationException("Failed to load property file", e);
            }
        }
        return properties;
    }
}

И строка журнала: ApplicationLifecycleListener.contextInitialized (ApplicationLifecycleListener.java:14) Класс ApplicationLifecycleListener:

public class ApplicationLifecycleListener implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        Properties applicationProperties = PropertiesManager.getInstance().getApplicationProperties();
        DBManager.getInstance().initialize(applicationProperties);
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        DBManager.getInstance().stopDb();
    }
}

В чем может быть проблема?

Как его развернуть? в автономном экземпляре Tomcat, wamp, внутри eclipse или что-то еще? Если вы используете относительный путь, я думаю, это может иметь отношение к вашей проблеме ...

Rafael Palomino 13.09.2018 20:11
0
1
78
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Без предоставления файла с точной строкой, которую вы видите NullPointerException (ни один из предоставленных вами файлов не имеет строк, отображаемых в журнале), трудно быть уверенным. Но один намек заключается в том, что, хотя вы помещаете свои файлы ресурсов для сборки с помощью Maven в папку '<project>/src/main/resources', при сборке и упаковке файла war он поместит файлы ресурсов вашего приложения в папку 'WEB-INF/classes', которая является частью пути к классам приложения по умолчанию. Следовательно, чтобы правильно ссылаться на них с помощью метода Thread.currentThread().getContextClassLoader().getResourceAsStream(...), вам не следует добавлять префикс 'resources\...' к имени файла, поскольку этот метод уже просматривает файлы в пути к классам приложения по умолчанию. Удалите приставку и посмотрите, работает ли она. Пожалуйста, обратитесь к этому отвечать для более подробной информации.

Другие вопросы по теме