作为linux服务运行时,从java web应用程序内部查找jetty主目录

作为linux服务运行时,从java web应用程序内部查找jetty主目录,jetty,Jetty,我在CentOS上安装了jetty 9,位于/srv/jetty,在jetty内部部署了一个webapp。 当我使用java-jar start.jar&启动jetty时,我可以在web应用程序中执行以下操作: 文件库=新文件(“.”) System.out.println(“基本目录:+Base.getAbsolutePath()) 它会返回jetty安装的正确目录 但是,我将jetty添加为linux服务,与名为jetty的用户一起运行,从服务jetty start开始,然后调用上述代码,将

我在CentOS上安装了jetty 9,位于
/srv/jetty
,在jetty内部部署了一个webapp。 当我使用
java-jar start.jar&
启动jetty时,我可以在web应用程序中执行以下操作:

文件库=新文件(“.”)
System.out.println(“基本目录:+Base.getAbsolutePath())

它会返回jetty安装的正确目录

但是,我将jetty添加为linux服务,与名为jetty的用户一起运行,从
服务jetty start
开始,然后调用上述代码,将始终返回运行jetty的用户的主目录,在本例中,该用户是
/home/jetty/
或者如果我以root用户身份运行,则
/root/


如何设置jetty以找到正确的目录?我尝试在配置文件中使用jetty.home,但似乎没有任何效果。

您有一些事情需要担心

Jetty上Web应用程序值得注意的路径:

  • ServletContext实路径
  • 码头之家酒店
  • 码头基地(从码头9.1开始)
ServletContext实路径

所有部署和启动的webapp都将占用一个工作目录或临时目录(根据容器的突发奇想)。servlet规范要求通过该webapp的ServletContext可以发现该路径。您可以通过拨打电话找到您的Web应用程序所在的位置

有关配置此工作/临时目录的5种不同方式,请参阅我先前的答案:

码头之家

默认情况下,所有Jetty分发实例都将具有名为
Jetty.home
的系统属性,该属性将是磁盘上Jetty主位置的路径。假设这是Jetty二进制文件和分发配置所在的位置

码头基地

从Jetty 9.1开始,还有一个名为
Jetty.base
的强制系统属性,它是Jetty配置+库+webapps的特定实例所在的位置。这通常是与jetty.home不同的目录

二进制文件与配置的分离是Jetty 9.1的核心概念,采用清晰的分离将使Jetty二进制文件的升级变得容易


参见

我发现了一个简单的答案:
usermod-m-d/srv/jetty-jetty

正如互联网上许多地方所建议的那样,我创建了一个用户jetty来运行jetty服务。因此,无论我做了什么,即使我设置了JETTY_日志,日志文件始终都会保存在用户的主目录中。通过修改jetty用户主目录,
文件(“.”
和日志都会在我想要的地方结束