0

我有一个 WildFly 安装,由于部署的数量和大小,在启动过程中需要一些时间。所以我想显示一个维护页面,直到完整的应用程序准备好。

在以前的 WildFly 版本之一中,我将default-web-module其用作配置选项并注册了一个小的 WAR 文件,该文件立即可见,并在大型应用程序可用时立即被替换。

不幸的是,WildFly 22 不再可能,而是在部署真正的根应用程序后立即引发异常:

org.jboss.msc.service.DuplicateServiceException: Service jboss.undertow.deployment.default-server.default-host./.UndertowDeploymentInfoService is already registered

我知道只要 WildFly 返回 503 错误,我就可以在 WildFly 前面放置一个小型 Web 服务器(nginx 或类似服务器)来返回我的维护网页。唯一阻止这种情况发生的事实是,维护页面仍然包含一些我需要在 nginx 上模拟的逻辑。

是否有任何其他选项可以确保在其他应用程序仍在启动时立即交付我的维护页面?

4

1 回答 1

0

如果我确实正确理解了您的问题,那么您想要的是在服务器关闭时显示状态 503 的错误页面或在服务器替换部署时显示 404 的错误页面。
但是对于您在应用程序服务器前面没有 Web 服务器的环境,我们只需要考虑 404 的情况。
503是应用服务器宕机时的web服务器,因此503服务不可用。

第一:控制台 -> 配置选项卡

前往 Wildfly 的管理控制台。并且取决于您使用的模式(域或独立),内部配置选项卡会有所不同。

第二:配置 -> Web -> 过滤器

如果使用域模式,请选择您正在使用的配置文件。然后转到子系统-> Web(Undertow)-> 过滤器-> 单击“查看”。

  • 我在具有域模式的本地计算机中使用了配置文件“完整”,因此,这就是我的控制台的样子。 Path_to_Filters

第三:选择过滤器中的错误页面选项卡

像这样设置代码和路径,其中代码是您希望静态页面显示的状态代码。path 是静态页面的文件位置。 设置路径和代码

您可以查看 Wildfly文档以了解错误页面设置。

第四:配置选项卡-> Web(Undertow)-> 服务器-> 默认服务器(或您使用的)

头到服务器

第五:选择服务器内的主机选项卡

选择“主机”选项卡,然后单击添加过滤器按钮。
选择我们刚刚在第三步中设置的过滤器,并将谓词设置为 true。

  • 我不确定如果没有设置为 true 或留空会产生什么影响,因为它不是必填字段。

最后:重新启动服务器以使您的配置正常工作。
现在,您应该能够在取消部署或重新部署应用程序时看到显示的静态页面。

很抱歉没有以太好的答案格式回答,因为我之前没有回答任何问题。

** 您也可以像这样设置您的standalone.xml 或 domain.xml 以获得相同的结果。 设置 XML 文件

于 2021-05-21T10:04:18.240 回答