jboss-deployment-structure.xml 和 global-module wildfly 20

Posted

技术标签:

【中文标题】jboss-deployment-structure.xml 和 global-module wildfly 20【英文标题】:jboss-deployment-structure.xml and global-module wildfly 20 【发布时间】:2020-12-01 07:10:35 【问题描述】:

我一直在寻找wildfly 20和jboss-deployment-structure.xml的全局模块之间的不同之处,我在我的服务器中定义了几个模块然后我构建了一个没有maven设置我的onw依赖项的项目,然后当我在独立文件中声明的全局项目模块都可以正常工作,但是当我在独立文件中对此进行评论,并在子部署 jds.xml 中声明它时,该项目不适用于 tag-tiles 或 struts 标记,这会抛出 org.apache.tiles.request .render.CannotRenderException: ServletException 包括路径 '/WEB-INF/jsp/tl/bas.jsp'。

jboss-deployment-structure.xml (version.1.0)

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <!-- <deployment>
        <exclusions>
            <module name="org.apache.log4j" />
        </exclusions>
    </deployment> -->
    <sub-deployment name="project.war">
        <dependencies>
            <module name="own.org.apache.tiles" />
            <module name="own.org.apache.struts2" />
            <module name="own.org.apache.commons" />
            <module name="own.org.apache.logging" />
            <module name="own.freemarker" />
            <module name="own.javassist" />
            <module name="own.ognl" />
        </dependencies>
    <!-- <exclusions>
      <module name="org.apache.log4j" />
    </exclusions> -->
    </sub-deployment>
</jboss-deployment-structure>

jboss-deployment-structure.xml (version.1.1)

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="own.org.apache.tiles" />
            <module name="own.org.apache.struts2" />
            <module name="own.org.apache.commons" />
            <module name="own.org.apache.logging" />
            <module name="own.freemarker" />
            <module name="own.javassist" />
            <module name="own.ognl" />
        </dependencies>
        <exclusions>
            <module name="org.apache.log4j" />
        </exclusions>
    </deployment> 
    <sub-deployment name="project.war">
        <dependencies>
            <module name="own.org.apache.tiles" />
            <module name="own.org.apache.struts2" />
            <module name="own.org.apache.commons" />
            <module name="own.org.apache.logging" />
            <module name="own.freemarker" />
            <module name="own.javassist" />
            <module name="own.ognl" />
        </dependencies>
        <exclusions>
            <module name="org.apache.log4j" />
        </exclusions>
    </sub-deployment>
</jboss-deployment-structure>

sn-p 代码standalone.xml

<subsystem xmlns="urn:jboss:domain:ee:5.0">
            <global-modules>
                <module name="own.org.apache.struts2" slot="main"/>
                <module name="own.org.apache.commons" slot="main"/>
                <module name="own.org.apache.logging" slot="main"/>
                <module name="own.freemarker" slot="main"/>
                <module name="own.javassist" slot="main"/>
                <module name="own.ognl" slot="main"/>
                <module name="own.org.apache.tiles" slot="main"/>
            </global-modules> 
<subsystem/>

服务器日志

2020-08-12 09:25:44,414 INFO  [stdout] (default task-1) org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/jsp/til/bf.jsp'.
...
2020-08-12 09:25:44,418 INFO  [stdout] (default task-1) Caused by: java.io.IOException: ServletException including path '/WEB-INF/jsp/til/bf.jsp'.
...
2020-08-12 09:25:44,418 INFO  [stdout] (default task-1)     at org.apache.tiles.request.servlet.ServletUtil.wrapServletException(ServletUtil.java:63) ~[tiles-request-servlet-1.0.7.jar!/:1.0.7]
...
2020-08-12 09:25:44,418 INFO  [stdout] (default task-1) Caused by: org.apache.jasper.JasperException: JBWEB004113: The absolute uri: http://tiles.apache.org/tags-tiles cannot be resolved in either web.xml or the jar files deployed with this application
...
2020-08-12 09:25:44,421 INFO  [stdout] (default task-1) 2020-08-12 09:25:44,420 DEBUG [default task-1] dispatcher.DefaultDispatcherErrorHandler (DefaultDispatcherErrorHandler.java:108) - Exception occurred during processing request: ServletException including path '/WEB-INF/jsp/til/bf.jsp'.
...
2020-08-12 09:25:44,421 INFO  [stdout] (default task-1) org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/jsp/til/bf.jsp'.2020-08-12 09:25:44,421 INFO  [stdout] (default task-1) org.apache.tiles.request.render.CannotRenderException: ServletException including path '/WEB-INF/jsp/til/bf.jsp'.
...
2020-08-12 09:25:44,424 INFO  [stdout] (default task-1) Caused by: java.io.IOException: ServletException including path '/WEB-INF/jsp/til/bf.jsp'.

...

2020-08-12 09:25:44,424 INFO  [stdout] (default task-1) Caused by: org.apache.jasper.JasperException: JBWEB004113: The absolute uri: http://tiles.apache.org/tags-tiles cannot be resolved in either web.xml or the jar files deployed with this application

问题是,为什么 jboss-deployment-structure.xml 不能在独立的情况下处理磁贴设置和全局模块的依赖项是???

PD:项目在 jboss-deployment-structure.xml 或 global-modules 设置下成功部署,但瓷砖标签不适用于 jboss-deployment-structure.xml 设置依赖项

【问题讨论】:

Jboss 与其他应用服务器不同。要查看错误,您应该查看 server.log。然后在这里发布。没有错误日志就很难理解问题。 @RomanC 添加 server.log 行,谢谢 您是否在 EAR 中包含需要任何模块的任何 JAR?使用全局模块将这些模块添加到所有部署中,在 jboss-deployment-structure.xml 中,您只是将这些模块添加到您的 WAR 中。 嗨@JamesR.Perkins,我做了三个设置。只有 jboss-deployment-structure.xml 在部署标签内带有调用模块。第二。只有 jboss-deployment-structure.xml 在子部署标签内调用模块,即我发布的 j-d-s.xml 和之前的任何设置以及 global-modules 声明的第三个。在三种情况下,部署是成功的,但请求磁贴只能在我所说的第三种设置中工作...... 如果您要部署 EAR,则需要定义需要这些依赖项的每个子部署。这可能解释了为什么全局模块可以工作,因为依赖项被添加到所有部署中。这意味着 EAR 本身,以及它的所有子部署。 【参考方案1】:

我的详细问题是由于某种原因,他们从模块调用的某些 jar 文件在项目部署中不可用。然后,我做了一个简单的修改 jboss-deployment-structure.xml ,一切都很好。

我添加了 meta-inf="export" 属性。

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <!-- <deployment>
        <exclusions>
            <module name="org.apache.log4j" />
        </exclusions>
    </deployment> -->
    <sub-deployment name="project.war">
        <dependencies>
            <module name="own.org.apache.tiles" meta-inf="export" />
            <module name="own.org.apache.struts2" meta-inf="export" />
            <module name="own.org.apache.commons" meta-inf="export" />
            <module name="own.org.apache.logging" meta-inf="export" />
            <module name="own.freemarker" meta-inf="export" />
            <module name="own.javassist" meta-inf="export" />
            <module name="own.ognl" meta-inf="export" />
        </dependencies>
    <!-- <exclusions>
      <module name="org.apache.log4j" />
    </exclusions> -->
    </sub-deployment>
</jboss-deployment-structure>

【讨论】:

以上是关于jboss-deployment-structure.xml 和 global-module wildfly 20的主要内容,如果未能解决你的问题,请参考以下文章

有一个 jboss-deployment-structure.xml 与公共库中的依赖项

Jboss部署SpringBoot2 JPA

从 JBoss 7 EAP 中排除提供的 jackson 版本

如何在 Wildfly 中设置两只耳朵的部署顺序