默认情况下使tomcat应用程序停止

时间:2016-01-29 14:27:48

标签: java tomcat

使用Tomcat Web应用程序管理器,我可以停止,启动,重新加载&取消部署特定应用程序。我以这种方式停止的任何应用程序都会在重新启动Tomcat时自动重新启动。

如何将特定应用程序配置为在Tomcat启动时不启动,并且仅在我通过Web应用程序管理器自行启动时启动?

2 个答案:

答案 0 :(得分:2)

您需要在deployOnStartup="false"&gt;上设置<Host conf/server.xml中的元素。请注意,这将导致manager应用程序在启动时不部署。你有几个选择:

  1. 使用<Context>
  2. 中的conf/server.xml配置经理
  3. 使用单独的<Host>deployOnStartup="true"并将经理部署到该主机
  4. Automatic Deployment Documentation是一个非常好的资源,可以看到哪些事件和配置组合会表现出什么样的行为。

答案 1 :(得分:2)

server.xml的deployIgnore元素中有Host个属性。

它接受上下文的正则表达式以进行NOT部署。

参考here

  

定义autoDeploy和时要忽略的路径的正则表达式   deployOnStartup已设置。这允许您保持配置   例如,版本控制系统,而不是部署.svn或CVS   恰好位于appBase中的文件夹。

     

此正则表达式与appBase相关。它也是锚定的,   意味着匹配是针对整个文件/目录名称执行的。   所以,foo只匹配一个名为foo但不是foo.war的文件或目录,   foob​​ar,或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">