アプリケーションで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
このエラーをトリガーする@Singletonと@Statelessで注釈が付けられたBeanがありました。私のコードはもちろん間違っていましたが、このようなメッセージと投稿はしばらくの間私を間違った道に導きました。
私はこれに対する答えを知っています。私の悩みのために、JBoss Supportで何週間も過ごしました。彼らは、EAP 6.2.xリリースで修正または少なくともより良いメッセージングを提供することを計画しています。
問題は、EJBアノテーションプリプロセッサで発生します。これは、戦争に巻き込まれ、ライブラリがコンパイルされ、EJBアノテーションをスキャンします。一部のJarファイルには、「クラスパス:」のエントリがマニフェストに含まれている場合があります。 (または、エントリの1つとして「。」が付いているもの以外)。これにより、アノテーションプリプロセッサはweb-inf lib内のすべてのjarファイルを再びばかげて処理します。最後に、すでに処理されているため、EJBアノテーションがすでに含まれているjarファイルに移動します。これにより、「xxxという名前のコンポーネントはすでに定義されています」というメッセージが表示されます。
したがって、ここで最もイライラするのは、おそらく不要な古いjarファイルであり、この不要なクラスパスマニフェストエントリが含まれていて、JBossがそれ自体を再帰することです。
私は同じ問題を抱えていましたが、提案された解決策はどれも役に立ちませんでした。 EJB JAR
が存在しましたtwice
(newest version and older version
) の中に WEB.WAR.
これは、Eclipseの親プロジェクトでのmaven
clean操作が子プロジェクトにカスケードされなかったためです。簡単な"mvn clean"
のchild project
。
Mavenゴールの実行:
wildfly:undeploy
clean
wildfly:deploy
私たちのケースで助けました:
[エラー]原因:Java.lang.IllegalArgumentException:WFLYEE0040:「xxx」という名前のコンポーネントは、このモジュールですでに定義されています "}}
@Singletonを削除すると、このエラーが修正されました。なぜだか分かりません。
問題は、あなたがTimeServiceDispatcher
を作成することではなく、シームフレームワークのクラスの一部ですorg.jboss.seam.async.TimerServiceDispatcher
は、そのシームfwクラスです。
今度はエラーについて。
これらの種類のエラーは、アプリケーションおよびサーバーによって提供されるライブラリに競合がある場合に発生します。これは、JBoss 7.1で非常に一般的で、非常にイライラします。
あなたは知る必要があります
次に、両側にあるライブラリのバージョンを確認します
アプリケーションとJBossのバージョンが同じ場合は、そのjarをアプリケーションから削除します(推奨)(それ以外に、どれを使用するかをdeployment-structure.xmlで構成できます)
アプリケーションjarとjbossのバージョンが異なる場合、その場合は、どちらを選択するかをデプロイメント記述子で構成する必要があります。
新しいコンポーネントをコピーして貼り付け、作成しているときに、@Stateless(value)
アノテーションが新しいコンポーネントで受け入れる値を更新するのを忘れました。つまり、同じ名前の2つのコンポーネントがあり、このエラーが発生しました。それが誰かを助けることを願っています。