War部署到嵌套目录时如何配置Jetty ?



我有一个我认为是一个简单的任务。将war部署到jetty (v9.4)服务器并运行该服务器。我打包了war并将其复制到$JETTY_BASE/webapps目录下的一个嵌套文件夹中。我用命令jetty -jar $JETTY_HOME/start.jar jetty.http.port=10202启动服务器。一切看起来都很好,服务器启动时没有出现任何错误。但是,当我尝试在浏览器中导航到应该是索引页的页面时,我得到的却是一个列出目录中所有文件的页面。如果我尝试访问我的任何服务,我得到一个404错误。

奇怪的是,如果我做同样的事情,但把war直接放在webapps目录下,我可以很好地击中索引页。我确信这只是一个配置选项,我错过了某个地方,我不知道哪一个。有人知道我需要做什么才能让它工作吗?

作为参考,这里是我的jetty-web.xml应用程序:

<Configure id="eyerep-data" class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/eyerep-data</Set>
<Set name="war"><SystemProperty name="jetty.monitorDir" default="./webapps" />/eyerep-data.war</Set>    
</Configure>

war被部署到$JETTY_BASE/webapps/eyerep-data/eyerep-data.war

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
<Set name="contextPath">/jetty</Set>
<Set name="war">absolute/path/to/jetty-app.war</Set>
</Configure>

http://localhost: 8080/jetty。

ContextPath很重要

Works for me

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

绝对路径

<Set name="monitoredDir">/my/context</Set>

我想我终于弄明白了。我需要从上下文路径中删除前导'/'。