【问题标题】:How to excude exports in deployment module (Wildfly)?如何在部署模块(Wildfly)中排除导出?
【发布时间】:2018-08-31 15:29:43
【问题描述】:

我有两个战争文件:core.warservice.war

存档 core.war 包括 jboss-deployment-structure.xml

<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
    <deployment>

        <exclude-subsystems>
            <subsystem name="logging"/>
            <subsystem name="pojo"/>
        </exclude-subsystems>

        <exclusions>
            <module name="org.slf4j"/>
            <module name="org.slf4j.impl"/>
            <module name="org.slf4j.ext"/>
            <module name="org.slf4j.jcl-over-slf4j"/>
            <module name="org.apache.log4j"/>
            <module name="org.apache.commons.logging"/>
            <module name="org.jboss.logging"/>
            <module name="org.jboss.logging.jul-to-slf4j-stub"/>
            <module name="org.jboss.logmanager"/>
            <module name="org.jboss.log4j.logmanager"/>
            <module name="org.jboss.as.logging"/>

            <!-- exclude wildfly logging modules, use slf4j + logback -->

            <module name="org.jboss.logmanager.log4j"/>
        </exclusions>
        <dependencies>
            <module name="deployment.some-dep-1.ear" meta-inf="import"/>
            <module name="deployment.some-dep-2.ear" meta-inf="import" services="import" optional="true"/>
            <module name="deployment.some-dep-3.ear" meta-inf="import"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

service.war 包括 jboss-deployment-structure.xml

<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
    <deployment>

        <exclude-subsystems>
            <subsystem name="logging"/>
            <subsystem name="pojo"/>
        </exclude-subsystems>

        <exclusions>
            <module name="org.slf4j"/>
            <module name="org.slf4j.impl"/>
            <module name="org.slf4j.ext"/>
            <module name="org.slf4j.jcl-over-slf4j"/>
            <module name="org.apache.log4j"/>
            <module name="org.apache.commons.logging"/>
            <module name="org.jboss.logging"/>
            <module name="org.jboss.logging.jul-to-slf4j-stub"/>
            <module name="org.jboss.logmanager"/>
            <module name="org.jboss.log4j.logmanager"/>
            <module name="org.jboss.as.logging"/>

            <!-- exclude wildfly logging modules, use slf4j + logback -->

            <module name="org.jboss.logmanager.log4j"/>
        </exclusions>

        <dependencies>
            <module name="deployment.core.war" services="import" meta-inf="import"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

我有叠加层:

standalone.xml

     ...
     <deployment-overlays>
        <deployment-overlay name="dep-lib">
            <!-- ... -->
            <content path="/WEB-INF/lib/org-springframework-spring-aop-3.2.10.RELEASE.jar" content="77d0b86238df32cb15e469eaa2f7f32c4893dc54"/>
            <content path="/WEB-INF/lib/org-springframework-spring-aspects-3.2.10.RELEASE.jar" content="d5327b3d4a74f224d32c338e83789ae877feb790"/>
            <!-- ... -->
            <deployment name="core.war"/>
        </deployment-overlay>
    </deployment-overlays>
    ...

在这种情况下,service.war 模块中的 classLoader 无法加载在 some-dep-1.ear/some-dep-2.ear 中声明的类/some-dep-3.ear 因为 标签&lt;module/&gt;中默认属性export="false"

现在我想排除 service.war 的一些覆盖依赖项。 我尝试使用 tage &lt;export/&gt; 类似这样的东西:

<?xml version='1.0' encoding='UTF-8'?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
    <ear-subdeployments-isolated>false</ear-subdeployments-isolated>
    <deployment>

        <exclude-subsystems>
            <subsystem name="logging"/>
            <subsystem name="pojo"/>
        </exclude-subsystems>

        <exclusions>
            <module name="org.slf4j"/>
            <module name="org.slf4j.impl"/>
            <module name="org.slf4j.ext"/>
            <module name="org.slf4j.jcl-over-slf4j"/>
            <module name="org.apache.log4j"/>
            <module name="org.apache.commons.logging"/>
            <module name="org.jboss.logging"/>
            <module name="org.jboss.logging.jul-to-slf4j-stub"/>
            <module name="org.jboss.logmanager"/>
            <module name="org.jboss.log4j.logmanager"/>
            <module name="org.jboss.as.logging"/>

            <!-- exclude wildfly logging modules, use slf4j + logback -->

            <module name="org.jboss.logmanager.log4j"/>
        </exclusions>

        <exports>
            <exclude-set>
                <path name="**"/>
            </exclude-set>
            <include-set>
                <path name="org/slf4j"/>
            </include-set>
        </exports>

        <dependencies>
            <module name="deployment.some-dep-1.ear" meta-inf="import"/>
            <module name="deployment.some-dep-2.ear" meta-inf="import" services="import" optional="true"/>
            <module name="deployment.some-dep-1.ear" meta-inf="import"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

但这不起作用。

如何排除叠加依赖项以进行导出?

【问题讨论】:

  • OT:如果您排除了日志子系统,您实际上并不需要排除所有日志模块。通过排除子系统,它们不会被添加到您的部署中。

标签: jboss wildfly overlay wildfly-10 jboss-modules


【解决方案1】:

如果您使用主从配置并且您的从配置是 EAP 6.3。或旧版本是不可能的,您需要降级您的配置。 [https://issues.jboss.org/browse/WFCORE-2899?_sscc=t][1]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-27
    • 2020-04-16
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多