没有设置Jetty家庭系统属性

时间:2013-05-22 14:58:35

标签: java jetty system-properties

我试图在jetty配置中使用系统属性,如下所示:

<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类。

1 个答案:

答案 0 :(得分:8)

jetty.home由Jetty的启动机制设置。

您正在使用Jetty 6.1.26 (注意:Jetty 6.x已被弃用,并于2010年停止使用.Detty 7/8/9是目前主动支持的Jetty版本)

虽然我不知道Jetty 6是如何工作的,但我知道Jetty 7/8/9在这方面是如何工作的。

Jetty启动机制(模块:/jetty-start/。又名start.jar)将在based on a set of rules中建立jetty.home属性start.configstart.jar)然后使用org.eclipse.jetty.xml.XmlConfiguration类(also defined in the start.config)在XmlConfiguration对象中建立一组属性,然后加载在命令行上声明的XML文件和{ {1}}。

问题#1:混合码头版本

你有混合的Jetty版本,可以使用,但不能跨Jetty 6(如你声明的start.ini的jetty主文件夹中所见)和Jetty 7(如D:\Developer Tools\jetty-6.1.26声明中所示)。它们100%不兼容。

问题#2:错误的XML语法使用

使用路径的XML语法是错误的。

您的语法

/etc/jetty7/context
  1. 它是相对和绝对路径的混合,不起作用。
  2. 使用路径时,必须始终在<Set name="monitoredDir"> <SystemProperty name="jetty.home" default="" />/etc/jetty7/context </Set> 上声明默认值。 (空默认值无效)
  3. 更正相对路径的语法

    <SystemProperty>

    如果您的<Set name="monitoredDir"> <SystemProperty name="jetty.home" default="." />etc/jetty7/context </Set> jetty.home,则会指向D:\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.dir,则结果为D:\Code\MyProject

    更正绝对路径的语法

    D:\Code\MyProject\etc\jetty7\context

    此语法可能不关心<Set name="monitoredDir">/etc/jetty7/context</Set> ,结果在unix上始终为jetty.home,在窗口上(很可能是)/etc/jetty7/context