2010-11-09 68 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

既然你是在一個servlet中,我推薦使用servlet上下文。只要你的文件是在WEB-INF它應位於與此代碼:

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

從JavaDoc中: 的getResource:返回一個URL映射到指定路徑的資源。該路徑必須以「/」開頭,並解釋爲相對於當前上下文根。

+0

是否有一個位置可以放置Servlet將使用的配置數據,以便它可以專用於運行它的環境,但不在Servlet的WAR文件中? (例如,不在web.xml或隨Servlet類一起提供的/ WEB-INF /文件夾中)。我有一個需要在多個環境中運行的Servlet(例如,連接到「dev」,「test」和「production」的不同服務器,但是WAR包本身不應該從環境變爲環境。) – iX3 2013-03-19 19:18:58

1

從您的代碼,文件scheduler.xml應該在你的web應用程序的文件夾WEB-INF。如果你把它放在那裏,並且它不能被讀取,請檢查它的權限。

編輯:它可能存在類路徑問題。對於初學者來說,嘗試把scheduler.xml在一些知名的地方,就像c:\Test\scheduler.xml一個絕對的目錄,然後使用

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

只是爲了檢查,如果這樣的作品。

+0

我已經把scheduler.xml放在WEB-INF。我使用Windows,我認爲不應該有任何關於權限的擔憂。我不知道如何發生這種情況。 – 2010-11-09 09:19:49