我试图在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类。
答案 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.config
( start.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
<Set name="monitoredDir">
<SystemProperty name="jetty.home" default="" />/etc/jetty7/context
</Set>
上声明默认值。 (空默认值无效)更正相对路径的语法
<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
。