jetty /context/text.xml在哪里?

Zey*_*nel 4 java jetty clojure

我正在学习本教程,并且我坚持使用Jetty配置.这就是说

现在,将目录更改为Jetty安装,并获取一组有效的默认配置选项,只需将文件contexts/test.xml(默认情况下与Jetty一起打包)复制到一个新文件:

$ cp contexts/test.xml contexts/web_test.xml
Run Code Online (Sandbox Code Playgroud)

但是我的jetty安装没有/context目录:

as-MacBook-Air:jetty.home a$ ls
README.TXT
VERSION.txt
bin
demo-base
etc
lib
license-eplv10-aslv20.html
logs
modules
notice.html
resources
start.d
start.ini
start.jar
webapps
Run Code Online (Sandbox Code Playgroud)

我错过了什么?jetty text.xml文件在哪里?

Joa*_*elt 10

文档链接:配置特定的Web应用程序部署

"context xml"是任何XML文件:

  1. 遵循Jetty IoC XML语法
  2. 配置一个 org.eclipse.jetty.webapp.WebAppContext
  3. 并且在您的部署者识别的目录中

对于#2(配置WebAppContext),Jetty 9的一个例子就是

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN"
   "http://www.eclipse.org/jetty/configure_9_0.dtd">

<Configure class="org.eclipse.jetty.webapp.WebAppContext">
  <Set name="contextPath">/myapp</Set>
  <Set name="war"><Property name="jetty.webapps" default="."/>/myapp.war</Set>
  <Set name="extractWAR">true</Set>
</Configure>
Run Code Online (Sandbox Code Playgroud)

对于#3,部署目录,由您自己的设置和配置决定.

看看etc/jetty-deploy.xml并寻找你的monitoredDirName是什么.

Jetty 7和Jetty 8在部署人员中有一个很难理解的怪癖,你可以通过webapp部署者将webapp部署为WAR,或者通过上下文部署者部署为Context,如果你有两个部署者,你的webapp将被部署两次.(令人困惑的无数人).

使用Jetty 9,合并了2个部署技术,使他们相互了解并防止重复的Web应用程序部署.

Jetty 9中的部署逻辑如下:

webapps目录(aka monitoredDirName)由WebAppProvider扫描.

此提供程序扫描一个或多个目录(通常是"webapps")以查找要部署的上下文,这可能是:

  • 标准WAR文件(必须以".war")结尾
  • 包含扩展WAR文件的目录
  • 包含静态内容的目录
  • 一个XML描述符Jetty IoC XML语法,用于配置ContextHandler或WebAppContext实例

为了避免双重部署并允许扫描目录内容的灵活性,提供程序实现了一些启发式方法来忽略扫描中找到的某些文件:

  • 隐藏文件(以...开头".")将被忽略
  • 名称以结尾的目录".d"将被忽略
  • 如果存在目录和WAR文件(例如foo/foo.war),则假定该目录是解压缩的WAR,并且仅部署WAR(可以重用已解压缩的目录)
  • 如果存在目录和匹配的XML文件(例如foo/foo.xml),则假定该目录是解压缩的WAR,并且仅部署XML(可以使用其配置中的目录)
  • 如果存在WAR文件和匹配的XML(例如foo.warfoo.xml),则假定WAR由XML配置并且仅部署XML.