7.6.3. 覆盖部署内容

部署覆盖可用于将内容覆盖到现有的部署中,而无需物理修改部署存档的内容。它允许您在运行时覆盖部署描述符、库 JAR 文件、类、JSP 页面和其他文件,而无需重新构建存档。

如果您需要为需要不同配置或设置的不同环境调整部署,这将非常有用。例如,当将部署从开发到测试、到暂存再移到生产环境时,您可能需要交换部署描述符,修改静态 Web 资源以更改应用的品牌,或者根据目标环境将 JAR 库替换为不同的版本。对于需要更改配置但因为策略或安全限制而无法修改或破解归档的安装,此功能也非常有用。

在定义部署覆盖时,您将指定将替换部署存档中的 文件的文件系统中的 文件。您还必须指定哪些部署应受到部署覆盖的影响。必须重新部署任何受影响的部署,才能使更改生效。

参数

您可以使用以下任一参数来配置部署覆盖:

  • 名称 :部署覆盖的名称。
  • 内容:: 以逗号分隔的列表,将文件系统上的 文件映射到所替换的存档中的 文件。每个条目的格式为 ARCHIVE_PATH=FILESYSTEM_PATH
  • 部署 :此覆盖所链接到的部署组合。
  • 重新部署受影响:: 重新部署所有受影响的部署。

有关完整使用详情,请执行 deployment-overlay --help

流程

  1. 使用 deployment-overlay add management CLI 命令添加部署覆盖:

    deployment-overlay add --name=new-deployment-overlay --content=WEB-INF/web.xml=/path/to/other/web.xml --deployments=test-application.war --redeploy-affected
    注意

    在受管域中,使用 --server-groups 指定适用的服务器组,或者通过 --all-server-groups 指定所有服务器组。

  2. 创建部署覆盖后,您可以将内容添加到现有覆盖中,将覆盖链接到部署,或删除覆盖。
  3. 可选:您可以在 <overlay> 元素中指定一个覆盖配置来链接包含静态 Web 资源(如 HTML、镜像或视频)的外部目录。<overlay> 元素位于应用程序 jboss-web.xml 文件中。使用这种配置时,您不需要重新打包应用程序。

    以下示例显示了 <overlay> 元素中的系统属性替换,其中 ${example.path.to.overlay} 定义 /PATH/TO/STATIC/WEB/CONTENT 位置。

    示例: jboss-web.xml 文件中的 <overlay> 元素

    <jboss-web>
            <overlay>${example.path.to.overlay}</overlay>
    </jboss-web>

    如果 jboss-descriptor-property-replacement 设为 true,则您可以在 <overlay> 元素 中指定系统属性,这是 descriptor 属性的默认值。

    要配置 jboss-descriptor-property-replacement,请使用以下命令:

    /subsystem=ee:write-attribute(name=jboss-descriptor-property-replacement,value=true)

    此命令在 JBoss EAP 配置的 ee 子系统中添加以下 XML 内容:

    <subsystem xmlns="urn:jboss:domain:ee:4.0">
        <jboss-descriptor-property-replacement>true</jboss-descriptor-property-replacement>
    </subsystem>