名为"XXX"的组件已在JBoss 7.1.1的此模块中定义

Zaw*_* oo 24 java jboss spring spring-3 jboss7.x

我没有TimerServiceDispatcher在我的应用程序中创建spring bean名称.但是,JBoss抛出异常因为TimerServiceDispatcher已在此模块中定义.我不知道是什么问题.我错过了什么?我需要做什么?

我的应用程序使用Seam 2.3,Spring 3.0和JPA 2.0.我不用EJB.

11:29:01,531 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015876: Starting deployment of "MRBS.war"
11:29:04,217 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC00001: Failed to start service jboss.deployment.unit."MRBS.war".PARSE: org.jboss.msc.service.StartExcept
ion in service jboss.deployment.unit."MRBS.war".PARSE: Failed to process phase PARSE of deployment "MRBS.war"
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:119) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [rt.jar:1.6.0_23]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.6.0_23]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.6.0_23]
Caused by: java.lang.IllegalArgumentException: JBAS011046: A component named 'TimerServiceDispatcher' is already defined in this module
    at org.jboss.as.ee.component.EEModuleDescription.addComponent(EEModuleDescription.java:137)
    at org.jboss.as.ejb3.deployment.processors.EJBComponentDescriptionFactory.addComponent(EJBComponentDescriptionFactory.java:60)
    at org.jboss.as.ejb3.deployment.processors.SessionBeanComponentDescriptionFactory.processSessionBeans(SessionBeanComponentDescriptionFactory.java:157)
    at org.jboss.as.ejb3.deployment.processors.SessionBeanComponentDescriptionFactory.processAnnotations(SessionBeanComponentDescriptionFactory.java:86)
    at org.jboss.as.ejb3.deployment.processors.AnnotatedEJBComponentDescriptionDeploymentUnitProcessor.processAnnotations(AnnotatedEJBComponentDescriptionDeploymentUnitProcessor.java:
58)
    at org.jboss.as.ejb3.deployment.processors.AbstractDeploymentUnitProcessor.deploy(AbstractDeploymentUnitProcessor.java:81)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    ... 5 more

11:29:04,230 INFO  [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "MRBS.war" was rolled back with failure message {"JBAS014671: Failed servi
ces" => {"jboss.deployment.unit.\"MRBS.war\".PARSE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"MRBS.war\".PARSE: Failed to process phase PARSE of d
eployment \"MRBS.war\""}}
11:29:04,292 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-6) JBAS015877: Stopped deployment MRBS.war in 61ms
11:29:04,294 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.deployment.unit."MRBS.war".PARSE: org.jboss.msc.service.StartException in service jboss.deployment.unit."MRBS.war".
PARSE: Failed to process phase PARSE of deployment "MRBS.war"
Run Code Online (Sandbox Code Playgroud)

JBoss的部署,structure.xml

<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
  <deployment>
      <dependencies>
          <module name="org.hibernate" export="true"/>
          <module name="javax.faces.api" export="true" />
          <module name="com.sun.jsf-impl" export="true"/>
          <module name="org.dom4j" export="true"/>
          <module name="org.hibernate.validator" export="true"/>
        </dependencies>
        <exclusions>
            <module name="org.apache.log4j" />
        </exclusions>       
  </deployment>  
</jboss-deployment-structure> 
Run Code Online (Sandbox Code Playgroud)

深度结构

MRBS.war
    -index.html
    +web-page-pakage
    +META-INF
    +WEB-INF
        +classes
        +lib
           aopalliance.jar
            commons-beanutils.jar
            commons-codec.jar
            commons-lang-2.5.jar
            drools-compiler.jar
            drools-core.jar
            drools-decisiontables.jar
            drools-templates.jar
            eclipselink.jar
            el-api.jar
            guava.jar
            guice.jar
            hibernate-ehcache.jar
            httpclient.jar
            httpcore.jar
            javax.persistence_2.0.1.v201006031150.jar
            jboss-el.jar
            jboss-seam-debug.jar
            jboss-seam-excel.jar
            jboss-seam-ioc.jar
            jboss-seam-mail.jar
            jboss-seam-pdf.jar
            jboss-seam-ui.jar
            jboss-seam.jar
            junit-4.8.1.jar
            log4j-1.2.14.jar
            mysql-connector-java-5.1.6-bin.jar
            primefaces-3.3.1.jar
            sac.jar
            spring-aop.jar
            spring-asm.jar
            spring-beans.jar
            spring-context.jar
            spring-core.jar
            spring-expression.jar
            spring-jdbc.jar
            spring-orm.jar
            spring-tx.jar
            spring-web.jar
            urlrewritefilter.jar
            xercesImpl.jar
            xml-apis.jar
        -components.xml     
        -faces-config.xml
        -jboss-deployment-structure.xml
        -pages.xml
        -web.xml
Run Code Online (Sandbox Code Playgroud)

Piw*_*waf 22

我有一个用@Singleton和@Stateless注释的bean触发了这个错误.我的代码当然是错的,但是这样的消息和帖子让我走错了路一段时间.

  • 我这样说是因为Singleton和Stateless bean类型基本上是两种不同的bean类型.我想说他们互相排斥.单例bean为所有客户端调用说一个bean,这意味着它本质上是无状态的.所以我相信JBoss最终会两次部署bean,一次作为Stateless bean,一次作为Singleton,最终导致命名冲突. (7认同)

djc*_*apm 14

我知道这个问题的答案.由于我的顽固性,我花了几周时间使用JBoss支持.他们计划使用EAP 6.2.x版本提供修复或至少更好的消息传递.

问题出现在EJB Annotation预处理器上 - 它将您的战争,以及编译到其中的lib并扫描它们以获取EJB注释.一些Jar文件可以在Manifest中为"Classpath:"创建一个条目.(或其他任何东西,但'.'作为其中一个条目).这会导致注释预处理器再次盲目地处理web-inf lib中的所有jar文件.最后它会到达一个带有EJB注释的jar文件,它已经看到了,因为它已经被处理过了 - 这导致它抱怨"已经定义了一个名为xxx的组件".

所以这里最令人沮丧的部分是它可能是一些你甚至不关心的旧jar文件中有这个不必要的Classpath清单条目 - 并导致JBoss自行递归.

  • 找到你正在使用的jar文件(跟踪依赖关系的踪迹) - 它可能是一个自定义的jar文件而不是maven中的东西.打开它,编辑清单,然后删除"." 从manifest.mf中指定的Classpath条目,然后jar备份.它很可能是与您的应用程序战争或耳朵等实际部署的罐子之一. (2认同)

小智 8

我有同样的问题,但对我来说,没有一个建议的解决方案有帮助.我注意到了EJB JAR存在twice(newest version and older version)WEB.WAR.

这是因为maveneclipse中父项目的清理操作没有级联到子项目.我做一个简单的固定它"mvn clean"child project.


ste*_*n.m 8

我在 IntelliJ 中遇到了同样的问题。原因是 IntelliJ 在 WEB-INF/classes 中和作为单独的 Jar 文件在 WEB-INF/lib 中使用我的类创建了一个 WAR 文件。

我花了一些时间才找出 IntelliJ 这样做的原因。原因在于对话 File -> Project Structure -> Artifacts: IntelliJ 项目结构对话

删除 'vertrag-ui-war' 编译输出后,错误不再发生。PS 我不知道为什么 IntelliJ 做这个设置 - 我绝对没有设置这个。


Jen*_*gsa 6

运行Maven目标:

  1. wildfly:undeploy
  2. clean
  3. wildfly:deploy

在我们的案例中提供了帮助:

[错误]原因:java.lang.IllegalArgumentException:WFLYEE0040:此模块中已经定义了名为“ xxx”的组件。


Muk*_*oel 0

问题不在于你创建TimeServiceDispatcher 它是seam框架的类部分org.jboss.seam.async.TimerServiceDispatcher,它是一个seam fw类。

现在关于错误。

当应用程序和服务器提供的库存在冲突时,就会发生此类错误。这在 JBoss 7.1 中非常常见,而且也非常令人沮丧。

你得知道

  1. 您的应用程序中打包了哪些库和版本?
  2. JBoss 7.1 提供了上述所有库和版本

现在对于两侧的库检查版本

如果应用程序和JBoss的版本相同,则从应用程序中删除该jar(建议)(否则您可以在deployment-struct.xml中配置要使用哪一个)

如果应用程序 jar 和 jboss 的版本不同,在这种情况下,您将需要在部署描述符中配置选择哪一个。