当前位置: 首页 > 知识库问答 >
问题:

部署EAR时,我如何告诉Wildfly我想使用Wildfly模块?

相俊迈
2023-03-14

我用野飞11和Java8。以前,我正在构建一个WAR文件,它需要dom4j JAR文件。我没有把它包含在WAR的WEB-INF/lib目录中,而是通过在WEB-INF/jboss-deployment-structure.xml.中添加一个条目链接到Wildfly模块JAR。所以我在EAR的根部创建了一个jboss-deploymebnt-structure.xml文件,有这些行

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.2">
        <deployment>
                <sub-deployment name="myapp.war">
                        <dependencies>
                        ...
                                <module name="org.dom4j" />

现在,当我部署EAR时,战争失败了,出现了如下错误:

  service jboss.undertow.deployment.default-server.default-host./myapp: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./orgsclient: java.lang.RuntimeException: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [META-INF/spring/infrastructure.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/dom4j/io/STAXEventReader

我还需要做些什么来告诉EAR文件WAR正在使用dom4j模块,而不是我用EAR本身打包的模块?

共有1个答案

丁理
2023-03-14

检查jboss是否部署了MEBNT结构。xml正确地放置在构建的ear包的META-INF子文件夹中(与application.xml一起)。如果使用maven ear插件,则应将xml文件放入:

ear/src/main/application/META-INF/jboss-deploymebnt-structure.xml

请注意,应用程序文件夹是耳朵插件的默认资源文件夹。

如果NoClassDefFound仍然存在问题,请尝试将依赖项重新声明为“ear global”,并将其设置为导出

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure>
    <deployment>
        <dependencies>
            <module name="org.dom4j" slot="main" export="true"/>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

如果仍然存在问题,则在wildlfy config(在ee子系统下)中将该模块声明为全局模块。然后你就可以完全摆脱jboss部署描述符。

    <subsystem xmlns="urn:jboss:domain:ee:4.0">
        <global-modules>
            <module name="org.dom4j">
        </global-modules>
        ...
 类似资料:
  • 我正在将一个EJB项目部署为Jboss WildFly18中的EAR。我的耳朵目前的布局是这样的: 我尝试过通过jboss-deployment-structure.xml和manifest.mf定义依赖关系,但没有成功。我还尝试用包名(即com.tura.common)命名依赖项,因为我已经看到这两种格式都使用过。还是没运气。我不太确定我在这里错过了什么;看来我是在按照预期的布局。有谁能帮忙吗?

  • 我(终于)从JBOSS5.1升级到Wildfly9.0.2.final(独立)。我正在学习如何通过scp重新部署压缩的EAR,希望部署扫描器能够接收到它。根据文档,我所要做的就是在standalone.xml(在部署描述符中)中设置auto-deploy-zipped=“true”,然后将。ear复制到deployments文件夹中。但是,当我这样做时,扫描器会在部署文件夹中放置一个“failed

  • 是否有使用Netbeans(8.0.2)在Wildfly上热部署ear文件的过程?我的当前生成过程(一个命令) 正在杀死我(每小时4/5个积木/香烟,一个积木3分钟)。 我在web上搜索了又搜索,听到人们谈论3毫秒的部署(我只能梦想),使用Netbeans“开箱即用”的热部署()以及在wildfly配置文件中向部署扫描程序添加。 但我还是没拿到。我的构建将我的部署发送到wildfly文件夹。而不是

  • 是否有一种方法可以只在EAR成功启动后才允许HTTP连接? 或者,是否可以用“503服务不可用”替换“404因为这里没有部署任何东西”-错误?这将更好地表达问题,并将容易处理外部······

  • 关于Wildfly8.1.0中的应用程序部署,我遇到了一个奇怪的问题 在应用程序刚开始的时候,部署速度很快,但今天变得非常慢,我在服务器日志中看到,在org.hibernate.annotations.common.version和org.hibernate.dialct.dialion行之间花费了5分钟 也没有错误信息... 一旦启动,应用程序就会毫无问题地运行 我真的不知道该怎么办 我对应用程

  • WildFly Full 10.1.0.final(WildFly Core 2.2.0.final):我正在寻找一种可能性,可以触发Java EE应用程序的部署(打包为EAR文件),而无需启动WildFly服务器或使用部署扫描程序。是否可以将ear文件添加到配置文件中,以便服务器在第一次启动时就开始部署我的应用程序?