web-dev-qa-db-ja.com

「XXX」という名前のコンポーネントは、JBoss 7.1.1のこのモジュールですでに定義されています

アプリケーションで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"

jboss-deployment-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> 

供給構造

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
24
Zaw Than oo

このエラーをトリガーする@Singletonと@Statelessで注釈が付けられたBeanがありました。私のコードはもちろん間違っていましたが、このようなメッセージと投稿はしばらくの間私を間違った道に導きました。

22
Piwaf

私はこれに対する答えを知っています。私の悩みのために、JBoss Supportで何週間も過ごしました。彼らは、EAP 6.2.xリリースで修正または少なくともより良いメッセージングを提供することを計画しています。

問題は、EJBアノテーションプリプロセッサで発生します。これは、戦争に巻き込まれ、ライブラリがコンパイルされ、EJBアノテーションをスキャンします。一部のJarファイルには、「クラスパス:」のエントリがマニフェストに含まれている場合があります。 (または、エントリの1つとして「。」が付いているもの以外)。これにより、アノテーションプリプロセッサはweb-inf lib内のすべてのjarファイルを再びばかげて処理します。最後に、すでに処理されているため、EJBアノテーションがすでに含まれているjarファイルに移動します。これにより、「xxxという名前のコンポーネントはすでに定義されています」というメッセージが表示されます。

したがって、ここで最もイライラするのは、おそらく不要な古いjarファイルであり、この不要なクラスパスマニフェストエントリが含まれていて、JBossがそれ自体を再帰することです。

14
djchapm

私は同じ問題を抱えていましたが、提案された解決策はどれも役に立ちませんでした。 EJB JARが存在しましたtwicenewest version and older version) の中に WEB.WAR.

これは、Eclipseの親プロジェクトでのmaven clean操作が子プロジェクトにカスケードされなかったためです。簡単な"mvn clean"child project

8

Mavenゴールの実行:

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

私たちのケースで助けました:

[エラー]原因:Java.lang.IllegalArgumentException:WFLYEE0040:「xxx」という名前のコンポーネントは、このモジュールですでに定義されています "}}

6
Jens Piegsa

IntelliJでも同じ問題が発生しました。その理由は、IntelliJが、私のクラスをWEB-INF/classesに、およびWEB-INF/libに個別のJarファイルとして、WARファイルを作成したためです。

IntelliJがこれを行った理由を見つけるのに少し時間がかかりました。理由はダイアログファイルにあります->プロジェクト構造->アーティファクト: IntelliJ Project Structure Dialogue

'vertrag-ui-war'コンパイル出力を削除した後、エラーは発生しなくなりました。追伸IntelliJがなぜこの設定をしたのか私にはわかりません-私は間違いなくこれを設定しませんでした。

5
stefan.m

@Singletonを削除すると、このエラーが修正されました。なぜだか分かりません。

1
Brooks

問題は、あなたがTimeServiceDispatcherを作成することではなく、シームフレームワークのクラスの一部ですorg.jboss.seam.async.TimerServiceDispatcherは、そのシームfwクラスです。

今度はエラーについて。

これらの種類のエラーは、アプリケーションおよびサーバーによって提供されるライブラリに競合がある場合に発生します。これは、JBoss 7.1で非常に一般的で、非常にイライラします。

あなたは知る必要があります

  1. すべてのライブラリとそのバージョンがアプリケーション内にパッケージ化されていますか?
  2. 上記のライブラリとバージョンのすべてがJBoss 7.1によって提供されるもの

次に、両側にあるライブラリのバージョンを確認します

アプリケーションとJBossのバージョンが同じ場合は、そのjarをアプリケーションから削除します(推奨)(それ以外に、どれを使用するかをdeployment-structure.xmlで構成できます)

アプリケーションjarとjbossのバージョンが異なる場合、その場合は、どちらを選択するかをデプロイメント記述子で構成する必要があります。

0
Mukul Goel

新しいコンポーネントをコピーして貼り付け、作成しているときに、@Stateless(value)アノテーションが新しいコンポーネントで受け入れる値を更新するのを忘れました。つまり、同じ名前の2つのコンポーネントがあり、このエラーが発生しました。それが誰かを助けることを願っています。

0
Skurpi