java - 如何显示部署在 Tomcat 中的应用程序的维护页面?

标签 java tomcat deployment maintenance-plan

考虑到我在 Tomcat 中部署了多个应用程序。我曾计划对特定应用程序进行维护。所以我想阻止对该特定应用程序的请求并重定向到静态页面,通知用户它正在进行计划内维护。

用tomcat配置来实现,可以吗? 任何帮助将不胜感激。 谢谢!

最佳答案

我的解决方案,我还没有在其他地方看到,依赖于使用 RewriteValve ,因此它专用于 SO 用户。您需要重新启动 Tomcat 才能激活它。

$CATALINA_BASE/conf/server.xml 中的主机定义中添加阀:

<Valve className="org.apache.catalina.valves.rewrite.RewriteValve" />

使用以下内容编辑或(更有可能)创建 $CATALINA_BASE/conf/Catalina/localhost/rewrite.config 文件:

# for a missing webapp which would be named fewbars
RewriteCond %{REQUEST_PATH} ^/fewbars/.*
RewriteRule ^(.*)$ /maintenance/index.html [R,NC]

# for a deployed webapp named fewbars
RewriteCond %{CONTEXT_PATH} /fewbars
RewriteRule ^(.*)$ /maintenance/index.html [R,NC]

如评论所述,行为取决于 webapp 状态:如果 war 文件和目录已被删除,那么您需要在 REQUEST_PATH 上进行匹配。相反,要隐藏 war 和目录仍然存在的应用程序,它将与 CONTEXT_PATH 匹配。

您了解您需要 $CATALINA_HOME/webapps 目录中的 /maintenance/index.html 文件

关于java - 如何显示部署在 Tomcat 中的应用程序的维护页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49536468/

相关文章:

java外部while循环不迭代

java - 为集合中的每个项目创建 Swing GUI 元素 - JAVA

java - 封装嵌入式tomcat服务器

azure - 使用 CircleCI 部署到 Azure VM

iphone - Xcode 4.2 Developer Preview 中的链接器错误

java - 部署非 .wars 的 Java 服务器应用程序

java - 关于for(),为什么使用i++而不是++i?

java - 连接 JSTL

tomcat - Jconsole 无法连接到在 AWS EC2 上使用安全选项运行的 tomcat

更改tomcat ajp端口时的java/lang/UnsupportedClassVersionError