使用Tomcat Web应用程序管理器,我可以停止,启动,重新加载&取消部署特定应用程序。我以这种方式停止的任何应用程序都会在重新启动Tomcat时自动重新启动。
如何将特定应用程序配置为在Tomcat启动时不启动,并且仅在我通过Web应用程序管理器自行启动时启动?
答案 0 :(得分:2)
您需要在deployOnStartup="false"
&gt;上设置<Host
conf/server.xml
中的元素。请注意,这将导致manager
应用程序也在启动时不部署。你有几个选择:
<Context>
conf/server.xml
配置经理
<Host>
与deployOnStartup="true"
并将经理部署到该主机Automatic Deployment Documentation是一个非常好的资源,可以看到哪些事件和配置组合会表现出什么样的行为。
答案 1 :(得分:2)
server.xml的deployIgnore
元素中有Host
个属性。
它接受上下文的正则表达式以进行NOT部署。
参考here:
定义autoDeploy和时要忽略的路径的正则表达式 deployOnStartup已设置。这允许您保持配置 例如,版本控制系统,而不是部署.svn或CVS 恰好位于appBase中的文件夹。
此正则表达式与appBase相关。它也是锚定的, 意味着匹配是针对整个文件/目录名称执行的。 所以,foo只匹配一个名为foo但不是foo.war的文件或目录, foobar,或myfooapp。要与&#34; foo&#34;匹配任何内容,您可以使用 FOO。
更多解释here:
Host的appBase目录中的任何Web应用程序存档文件 尚未因上下文XML而部署的内容 描述符,没有相同名称的相应目录 (没有&#34; .war&#34;扩展名),并且不被deployIgnore排除 将在下一步部署。使用的上下文路径将是斜杠字符 (&#34; /&#34;)后跟Web应用程序存档名称减去&#34; .war&#34; 延期。此规则的一个例外是Web应用程序 存档名为&#34; ROOT.war&#34;将使用/的上下文路径进行部署。 可以通过使用#来定义多级上下文,例如,使用名为的WAR foo#bar.war用于/ foo / bar的上下文路径。
<强>更新强>
为了证明我的答案,我试着回答@rgh评论。
刚刚下载了最新版本的Tomcat8(8.0.30)。 它确实通过Web应用程序(#34;示例&#34;。
)发货启动,不用进行任何修改(摘自catalina.out):
Deploying web application directory /home/opt/apache-tomcat-8.0.30/webapps/examples
Deployment of web application directory /home/opt/apache-tomcat-8.0.30/webapps/examples has finished in 256 ms
从带有剪切的修改后的server.xml开始:
<Host name="localhost" appBase="webapps" deployIgnore="^examples$" unpackWARs="true" autoDeploy="true">
阻止应用&#34;示例&#34;待部署。
所以在你的情况下,试试这个
<Host name="localhost" appBase="webapps" deployIgnore="^welcome$" unpackWARs="true" autoDeploy="true">