【问题标题】:How to disable specific apps from starting during Tomcat startup?如何在 Tomcat 启动期间禁用特定应用程序的启动?
【发布时间】:2011-02-21 14:18:23
【问题描述】:

我的公司正在准备一个新的生产箱,而当前的生产箱正在运行。我想主动在新生产盒的 Tomcat 容器中安装应用程序,但希望保持禁用它们(类似于 Websphere 中的功能)——这非常重要,因为一些应用程序会从数据库中轮询数据并启动应用程序会干扰当前的生产部署。它们将在生产切换时启用。

我将如何做到这一点?任何见解将不胜感激。

【问题讨论】:

  • 那么,您希望 Tomcat 在启动时从不部署任何东西?

标签: java tomcat deployment


【解决方案1】:

在启动 tomcat 之前,您可以简单地将 webapp 中不想自动启动的 de WEB-INF 目录重命名为 Disabled-WEB-INF 等其他名称。

稍后,如果您希望在 tomcat 运行时启动该应用程序,只需将目录重命名为 WEB-INF。

【讨论】:

  • 应用未运行,但在管理器上仍显示为正在运行。
【解决方案2】:

<Host>中添加deployIgnore属性,值为要忽略的目录的正则表达式,如果要忽略foo,只需设置deployIgnore="foo"和你想忽略更多的目录,使用正则表达式来设置值

【讨论】:

  • 这会使应用程序取消部署。需要的是使应用程序已部署但未启动。
  • 但这是我遇到的最佳解决方案。启动应用程序需要一些工作(因为它尚未部署)。另见coderanch.com/t/580390/Tomcat/Turning-off-auto-start-web
  • 在Ubuntu上,配置文件是/etc/tomcat7/server.xmldeployIgnoreHost的一个属性。未部署意味着它不会显示在管理器上,这就是它难以启动的原因。
【解决方案3】:

可以使用tomcat web应用管理器;这个 webapp 确实可以让你停止运行 tomcat 中的任何应用程序。

【讨论】:

  • 谢谢,但要求是应用程序不能在 Tomcat 被回收时自动启动 - 例如通过重新启动 - 否则,如果新应用程序开始运行,他们可以提取数据来自生产数据库,因此会干扰当前的生产安装。
【解决方案4】:

conf/server.xml<Host> 元素中放入deployOnStartup="false"。参考:Tomcat Host documentation

【讨论】:

  • 这将禁用部署所有应用程序,包括“管理器”应用程序。需要的是继续自动部署应用程序而不是启动它。
猜你喜欢
  • 2011-05-26
  • 2013-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多