2012-11-01 9 views
15

私のアプリケーションにTimerServiceDispatcherという名前のSpring Beanを作成しませんでした。しかしJBossはこのモジュールで既に定義されているTimerServiceDispatcherのために例外をスローします。 問題は何か分かりません。私は何が欠けているのですか?私は何をする必要がありますか?JBoss 7.1.1でこのモジュールに「XXX」という名前のコンポーネントが既に定義されています

私のアプリケーションでは、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-展開する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> 

Deplyment構造

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 

答えて

0

問題は、その、あなたはそれがシームフレームワークorg.jboss.seam.async.TimerServiceDispatcherのクラス部分であるTimeServiceDispatcherを作成DINTということではありませんシームfwクラス。

今のところエラーについて。

この種のエラーは、アプリケーションとサーバーで提供されるライブラリに競合が発生した場合に発生します。 JBoss 7.1と非常によく共通していて、非常にイライラしています。

あなたは

  1. uは、アプリケーション内でどのようなすべてのライブラリとそこバージョンをパッケージ化しているを知っている必要がありますか?
  2. 上記ライブラリとバージョンのすべてがアプリケーションとJBossのバージョンが同じであれば、バージョン

    ためのサイド チェックの両方の上にあるライブラリのための今すぐにJBoss 7.1

によって提供されているものを、そのjarファイルを削除アプリケーションから(推奨)を選択します(それ以外の場合は、deployment-structure.xmlでどちらを使用するかをコンフィグレーションできます)

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

+0

私は大丈夫のJBoss-展開するstructure.xml – CycDemo

+0

@CycDemo、ザッツを使用していますが、同様ライブラリの競合を解決する必要があります。 戦争の構造を投稿できますか? 'jar -tf nameofwar.war'を使用して結果を投稿しますか? –

+0

@CycDemo、チャットしてもらえますか?そうでなければ、ここで長い議論になるだろうか? –

10

私はこの回答を知っています。私の頑固さのためにJBoss Supportでそれを過ごしました。彼らはEAP 6.2.xリリースでの修正または少なくともより良いメッセージングの提供を計画しています。

問題はEJBアノテーションプリプロセッサで発生します。これは戦争とコンパイルされたライブラリを取り出し、EJBアノテーションをスキャンします。 Jarファイルの中には、 "Classpath:"のマニフェストにエントリを持つものがあります。 (またはエントリの1つとして '。'が付いているものは何でも)。これにより、annotationプリプロセッサは、Web-infライブラリ内のすべてのjarファイルをidiotically処理します。最後に、以前にすでに処理されていたため、すでに見たEJBアノテーションが入ったjarファイルに移動します。これにより、「名前付きxxxが既に定義されています」という文句が発生します。

ここで最も不満足な部分は、この不要なClasspathマニフェストエントリがある気にしない古いJARファイルだと思います。JBossがそれ自身の上に再帰します。

+0

で答えてください[OK]を、これも私のためのケースのようですが、あなたはそれをどのように修正しました - あなたがやった場合には、 ? – Carolik

+0

上記の問題を解決するにはどうすればよいですか? – Jet

+0

あなたが使用しているjarファイルを見つけます(依存関係の証跡に従います)。これはおそらくカスタムjarファイルであり、mavenでは何も出ていません。バストを開き、マニフェストを編集し、 "。"を削除します。 manifest.mfで指定されたClasspathエントリから、それをjarにバックアップします。おそらくあなたのアプリケーションの戦争や耳などで実際に展開されている瓶からのものでしょう。 – djchapm

17

このエラーを引き起こした@Singletonと@Statelessで注釈が付けられたBeanがありました。私のコードは当然間違っていましたが、このようなメッセージと投稿は私をしばらく間違った道に導きました。

+0

+1。私は同じ間違いを犯した。このエラーメッセージにはいくつかの改善があります。 –

+0

なぜ「私のコードは間違っていたのですか?私たちはこの問題を抱えていますが、そのような注釈はありますが、何が問題なのか分かりません。 1.7.0_60 JDKにアップグレードするまでうまくいきました。 – Redboots

+3

シングルトンとステートレスのBeanタイプは基本的に2つの異なるBeanタイプなので、私はそれを言います。私は彼らが互いに排他的だと言いたい。シングルトンBeanは、すべてのクライアント呼び出しに対して1つのBeanを表しています。つまり、本質的にステートレスです。だから、私はJBossがBeanをステートレスBeanとして、そして一度シングルトンとして、ネーミング競合で2回デプロイすることを終わらせると信じています。 – Piwaf

0

コピー&ペーストして新しいコンポーネントを作成している間、私は@Stateless(value)注釈が新しいコンポーネントに受け入れるという値を更新するのを忘れ。つまり、同じ名前の2つのコンポーネントがあり、このエラーが発生しました。誰かを助けることを願っています。

4

実行Mavenのゴール:

  1. wildfly:undeploy
  2. clean
  3. wildfly:deployは、我々の場合には役立った:

    [ERROR]によって引き起こさ:java.langで.IllegalArgumentExceptイオン:WFLYEE0040: 'xxx'という名前のコンポーネントがこのモジュールで既に定義されています。 "}}

0

@Singletonはこのエラーを修正しました。理由は考えられません。

5

私は同じ問題を抱えていたが、私のために提案ソリューションのどれも助けません。 私は日食で、親プロジェクトのmavenクリーン操作が子プロジェクトにカスケードしていなかったので、これはだったWEB.WAR.

EJB JARtwicenewest version and older version)存在していたことに気づきました。 child projectで簡単な"mvn clean"を実行して修正しました。

0

私はIntelliJでも同じ問題がありました。その理由は、IntelliJがWEB-INF/classesのクラスとWEB-INF/libの別のJarファイルの両方のクラスを持つWARファイルを作成したためです。

それはIntelliJのは、これをしなかった理由を見つけるために私にいくつかの時間がかかりました。 IntelliJ Project Structure Dialogue

「vertrag-UI-戦争」を除去した後、出力をコンパイルし、エラーはもう発生しませんでした: - >プロジェクト構造 - >アーティファクト 理由は、対話ファイルに横たわっていました。 P.P.なぜIntelliJがこの設定をしたのか分かりません。私はこれを設定していませんでした。

関連する問題