2013-05-22 29 views
3

我試着去使用系統屬性在我的碼頭配置如下所示:碼頭家庭系統屬性未設置

<SystemProperty name="jetty.home" default="" />/etc/jetty7/context 

但jetty.home總是返回空。我如何設置這個變量並將其指向哪裏?

我需要這個上下文路徑。

我的碼頭主文件夾是D:\ Developer Tools \ jetty-6.1.26。它需要指向這個文件夾嗎?如果是這樣,我該怎麼做?我需要使用Windows全局變量嗎?

使用org.mortbay.jetty中的org.eclipse.jetty.xml.XmlConfiguration類。

回答

8

jetty.home由Jetty的啓動機制設置。

您正在使用碼頭6.1.26 (注:碼頭6.x中已被棄用,結束於2010年碼頭續航最好要回7/8/9是當前積極支持碼頭的版本)

雖然我不知道Jetty 6是如何工作的,但我知道Jetty 7/8/9在這方面的工作原理。

碼頭啓動機構(模塊:/jetty-start/又名start.jar)將建立在start.config(存在於start.jar的文件)的所述jetty.home屬性based on a set of rules,然後使用org.eclipse.jetty.xml.XmlConfiguration類(also defined in the start.config)建立一組中的屬性XmlConfiguration對象,然後加載命令行中聲明的XML文件和start.ini

問題1:混合碼頭版本

你有碼頭型號的混合,也可以工作,但不能跨碼頭6(如圖的D:\Developer Tools\jetty-6.1.26你宣稱碼頭主文件夾)和Jetty 7(如你的/etc/jetty7/context聲明所示)。他們100%不相容。

問題2:與工作路徑錯誤的XML語法使用

你的XML語法是錯誤的。

你的語法

<Set name="monitoredDir"> 
    <SystemProperty name="jetty.home" default="" />/etc/jetty7/context 
</Set> 
  1. 它是相對和絕對路徑的組合,將無法正常工作。
  2. 在處理路徑時,您必須始終聲明使用<SystemProperty>時的默認值。(空的默認無效)

正確語法相對路徑

<Set name="monitoredDir"> 
    <SystemProperty name="jetty.home" default="." />etc/jetty7/context 
</Set> 

如果您jetty.homeD:\Developer Tools\jetty-distribution-7.6.11.v20130520,那麼這將指向D:\Developer Tools\jetty-distribution-7.6.11.v20130520\etc\jetty7\context

如果不前申報jetty.home使用XmlConfiguration然後將使用默認值,"."它將被翻譯爲任何您當前的工作目錄是(也知道如System.getProperty("user.dir"))加上您指定的硬編碼相對路徑。如果user.dirD:\Code\MyProject,那麼結果將是​​

正確語法絕對路徑

<Set name="monitoredDir">/etc/jetty7/context</Set> 

這句法都可以在Unix不在乎jetty.home,結果永遠是/etc/jetty7/context及(極有可能是)在窗口上C:\etc\jetty7\context

+0

感謝您的澄清。關於混合版本和默認路徑,您完全正確。原來我在SystemPropoerty和etc/jetty之間輸入了一個... – user1226868