2010-11-09 3 views
1

Я использую общую конфигурационную библиотеку apache, чтобы извлечь мой список конфигурации при запуске моего веб-сайта.где разместить общий конфигурационный файл apache

но его всегда заброшенная ошибка Не удается найти источник конфигурации.

где я должен положить свой файл конфигурации?

здесь web.xml:

<servlet> 
    <servlet-name>Quartz</servlet-name> 
    <servlet-class>me.myclass.Init</servlet-class> 
    <load-on-startup>1</load-on-startup>   
</servlet> 

и в моем коде:

public void init() 
{ 
    XMLConfiguration xmlConfig; 
    try { 
     xmlConfig = new XMLConfiguration("/WEB-INF/scheduler.xml"); 
     System.out.println(xmlConfig.getString("master")); 
    } catch (org.apache.commons.configuration.ConfigurationException ex) { 
     System.out.println(ex); 
    } 
} 

ответ

2

Поскольку вы находитесь в сервлете, я рекомендую использовать контекст сервлета. До тех пор, как ваш файл находится в WEB-INF он должен находиться с этим кодом:

ServletContext context = getServletContext(); 
    File schedulerFile = new File(context.getResource("/WEB-INF/scheduler.xml").getPath()); 
    xmlConfig = new XMLConfiguration(schedulerFile); 

Из JavaDocs: getResource: Возвращает URL ресурса, который отображается на указанном пути. Путь должен начинаться с «/» и интерпретируется как относительно текущего корня контекста.

+0

Есть ли место, где данные конфигурации, которые будут использоваться сервлетом, могут быть размещены так, чтобы они были специфичны для среды, на которой она запущена, но не в файле WAR сервлета? (например, не в web.xml или папке/WEB-INF /, которая поставляется с классами Servlet). У меня есть сервлет, который нужно запускать в нескольких средах (например, подключается к различным серверам для «dev», «test» и «production», но сам WAR-пакет не должен меняться из среды в среду). – iX3

1

Из кода, файл scheduler.xml должен находиться в папке WEB-INF вашего веб-приложения. Если вы поместите его там, и его нельзя прочитать, проверьте его разрешения.

Редактировать: Возможно, существует проблема с классом. Для начала, попробуйте положить scheduler.xml в некоторых хорошо известном месте, что абсолютный каталог как c:\Test\scheduler.xml, а затем использовать

xmlConfig = new XMLConfiguration("c:/Test/scheduler.xml"); 

просто чтобы проверить, работает ли этот путь.

+0

Я уже поместил scheduler.xml в WEB-INF. и я использую окна, я думаю, что не должно быть никаких проблем с разрешением. Я не знаю, как это может произойти. –

Смежные вопросы