我正在学习本教程,并且我坚持使用Jetty配置.这就是说
现在,将目录更改为Jetty安装,并获取一组有效的默认配置选项,只需将文件contexts/test.xml(默认情况下与Jetty一起打包)复制到一个新文件:
$ cp contexts/test.xml contexts/web_test.xml
但是我的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
我错过了什么?jetty text.xml文件在哪里?
文档链接:配置特定的Web应用程序部署
"context xml"是任何XML文件:
遵循Jetty IoC XML语法
配置一个 org.eclipse.jetty.webapp.WebAppContext
并且在您的部署者识别的目录中
对于#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>
对于#3,部署目录,由您自己的设置和配置决定.
看看etc/jetty-deploy.xml
并寻找你的monitoredDirName
是什么.
对于Jetty 9.1+,那就是 ${jetty.base}/webapps/
对于Jetty 8来说,${jetty.home}/contexts/
看(etc/jetty-contexts.xml
)
对于Jetty 7来说,${jetty.home}/contexts/
看(etc/jetty-contexts.xml
)
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.war
和foo.xml
),则假定WAR由XML配置并且仅部署XML.