该页面定义了许多典型用例中自动部署程序的预期行为。这是Tomcat功能的一个复杂区域。虽然此文档与Tomcat的行为之间的任何区别都是一个错误,但解决方法可能是更改此文档,Tomcat的行为或同时更改两者。
术语描述
XML格式
位于主机的
configBase中
的XML配置文件。它必须包含一个
元素,并且可以包含可选的嵌套元素。它没有定义显式的
docBase
属性。它代表一个Web应用程序。它通常称为context.xml文件。
XML + EW
位于主机的
configBase中
的XML配置文件。它必须包含一个
元素,并且可以包含可选的嵌套元素。它包括一个指向外部WAR的显式
docBase
属性。它代表一个Web应用程序。它通常称为context.xml文件。
XML + ED
位于主机的
configBase中
的XML配置文件。它必须包含一个
元素,并且可以包含可选的嵌套元素。它包括一个指向外部目录的显式
docBase
属性。它代表一个Web应用程序。它通常称为context.xml文件。
位于主机的
appBase
中的WAR文件。WAR不包括嵌入式context.xml文件。
WAR + XML
位于主机的
appBase
中的WAR文件。WAR确实包含一个嵌入式context.xml文件。
位于主机的
appBase
中的目录。该目录不包含嵌入式context.xml文件。
DIR + XML
位于主机的
appBase
中的目录。该目录确实包含一个嵌入式context.xml文件。
代表Web应用程序的Context对象被销毁,并创建了一个新的Context对象。如果存在且配置允许,则通过解析context.xml文件来创建此新的Context对象。在应用程序启动过程中将解析web.xml文件。默认配置下标准管理器中存储的所有会话均不会保留。重新部署期间对Web应用程序的任何请求都将被处理,就像未部署Web应用程序一样。
代表Web应用程序的Context对象被停止,然后启动。在应用程序启动过程中将解析web.xml文件。默认配置下标准管理器中存储的所有会话均不会保留。在重新加载期间对Web应用程序的任何请求都将保留,直到重新加载完成为止,此时它们将继续使用重新加载的Web应用程序。
本部分描述了当自动部署过程检测到Web应用程序文件已被删除时Tomcat的行为。
删除或修改文件时,修改/删除的资源之后列出的所有重新部署资源本身都将被删除(并可能会重新创建)。重新部署资源的顺序为:
XML格式
上面的删除规则有一些例外:
全局资源永不删除
外部资源永不删除
如果已修改WAR或DIR,则仅当
copyXML
为
true
和
deployXML
是
true
在下表中:
“-”表示“不变”。即工件在更改之前不存在,在更改之后也不存在。 “-”而不是“ N”用于将注意力集中在变化上。
“ R”表示通过扩展WAR文件来重新创建目录。仅当
unpackWARs
为
true
。
“ XW”表示如果WAR包含META-INF / context.xml文件,它将被提取并放置在主机的
configBase中
。仅当
copyXML
为
true
和
deployXML
是
true
。
“ XD”表示如果目录包含META-INF / context.xml文件,它将被复制到主机的
configBase
。仅当
copyXML
为
true
和
deployXML
是
true
。
如果添加了WAR,则将删除所有DIR,并且可以根据
unpackWARs
重新创建DIR。
如果添加了引用外部
docBase
的XML文件,则appBase中的所有WAR或DIR都将被删除。如果外部资源是WAR并且
unpackWARs
为true,则可以重新创建DIR。
如果在已经存在WAR且
unpackWAR
是
false
,DIR将被忽略,但在首次检测到DIR时将记录警告。如果删除了WAR,则将保留DIR,并且可以通过自动部署进行部署。
如果在已存在外部WAR的情况下将WAR添加到
appBase
,则将忽略
appBase中
的WAR,但在首次检测到
appBase中
的WAR时将记录警告。如果删除了外部WAR,则将保留
appBase中
的WAR,并且可以通过自动部署进行部署。
如果将XML文件添加到从该DIR部署的应用程序的META-INF目录中,则将始终重新部署该应用程序。结果将与新部署相同。
由于在
configBase
中发现了XML文件,
所以
将忽略
deployXML
和
copyXML
。
因为没有WAR文件,所以
unpackWARs
被忽略。
由于期望的
docBase中
没有内容,因此上下文将无法启动。
Web应用程序部署失败,因为它包含嵌入式META-INF / context.xml,
deployXML
为
false
并且
configBase中
未提供XML。
仅当
copyXML
为时才删除XML文件。
true
和
deployXML
是
true
。