Как я могу указать каталоги в файле war? - PullRequest
2 голосов
/ 18 февраля 2010

Я новичок в сервлете. Я использую следующий код в servlet.then, развернутый в Jboss 4.1. backup_database_configuration_location - это местоположение файла свойств. Но его нельзя найти. как я могу указать каталоги в файле войны? Спасибо всем заранее

try {
  backupDatabaseConfiguration = new Properties();
  FileInputStream backupDatabaseConfigurationfile = new FileInputStream(backup_database_configuration_location));
  backupDatabaseConfiguration.load(backupDatabaseConfigurationfile);
  backupDatabaseConfigurationfile.close();
} catch (Exception e) {
  log.error("Exception while loading backup databse configuration ", e);
  throw new ServletException(e);
}

Ответы [ 2 ]

2 голосов
/ 18 февраля 2010

Если он размещен в веб-контенте , тогда используйте ServletContext#getResourceAsStream():

InputStream input = getServletContext().getResourceAsStream("/WEB-INF/file.properties"));

Метод getServletContext() унаследован от HttpServlet. Просто назовите это как есть внутри сервлета.

Если он находится в classpath , тогда используйте ClassLoader#getResourceAsStream():

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("file.properties");

Разница с Class#getResourceAsStream() в том, что вы не зависите от загрузчика классов, который загрузил класс (который может отличаться от того, который использует поток, если класс, например, служебный класс, упакованный в JAR, и конкретный загрузчик классов может не иметь доступа к определенным путям пути к классам).

1 голос
/ 18 февраля 2010

Где находится ваш файл свойств? Он находится прямо на вашем жестком диске или упакован в файл JAR?

Вы можете попытаться получить файл, используя метод getResourceAsStream():

configuration = new Properties();
configuration.load(MyClass.class.getResourceAsStream(backup_database_configuration_location));

(или курс, замените MyClass на имя вашего текущего класса)

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