3

我正在尝试在我的码头配置中使用系统属性,如下所示:

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

jetty.home总是返回空。我怎样才能设置这个变量并将它指向哪里?

我需要这个作为上下文路径。

我的码头主文件夹是D:\Developer Tools\jetty-6.1.26. 它需要指向这个文件夹吗?如果是这样,我该怎么做?我需要使用 Windows 全局变量吗?

我正在使用org.eclipse.jetty.xml.XmlConfiguration来自org.mortbay.jetty.

4

1 回答 1

10

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

您正在使用 Jetty 6.1.26 (注意:Jetty 6.x 已被弃用,并于 2010 年结束生命周期)

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

更新:2019 年 8 月: Jetty 9.4.x 是 Jetty 当前稳定且受到积极支持的版本主线。

Jetty 启动机制(模块:/jetty-start/.aka start.jar)将根据(存在于 中的文件)中的一组规则jetty.home建立属性,然后使用类(也在 中定义)在对象中建立一组属性,然后加载在命令行上声明的 XML 文件和.start.configstart.jarorg.eclipse.jetty.xml.XmlConfigurationstart.configXmlConfigurationstart.ini

问题 #1:混合 Jetty 版本

您可以混合使用 Jetty 版本,但不能跨 Jetty 6(如您声明的 Jetty 主文件夹中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.homeis 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.dirD:\Code\MyProject,那么结果将是D:\Code\MyProject\etc\jetty7\context

绝对路径的正确语法

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

这种语法可能不太关心jetty.home,结果将始终/etc/jetty7/context在 unix 上,并且(很可能是)C:\etc\jetty7\context在 windows 上。

于 2013-05-22T15:29:56.070 回答