Je n'ai pas créé le nom du bean Spring avec TimerServiceDispatcher
dans mon application. Mais, l'exception de levée JBoss
à cause de TimerServiceDispatcher
est déjà définie dans ce module. Je ne sais pas quel est le problème. Qu'est-ce qui me manque? Ce que je dois faire?
Mon application utilise Seam 2.3, Spring 3.0 et JPA 2.0. Je n'utilise pas 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>
Structure de déploiement
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
J'ai eu un bean annoté avec @Singleton et @Stateless qui a déclenché cette erreur. Mon code était bien sûr erroné, mais le message et les messages comme celui-ci m'ont conduit sur le mauvais chemin pendant un certain temps.
Je connais la réponse à celle-ci. J'ai passé des semaines avec JBoss Support à cause de mon entêtement. Ils prévoient de fournir un correctif ou au moins une meilleure messagerie avec la version EAP 6.2.x.
Le problème se pose avec les préprocesseurs d'annotation EJB - qui prennent votre guerre, et les bibliothèques compilées dans celui-ci et les scanne pour les annotations EJB. Certains fichiers Jar peuvent avoir une entrée dans le manifeste pour "Classpath:." (ou autre chose mais avec '.' comme une des entrées). Ainsi, le préprocesseur d'annotations traite à nouveau de façon idiote tous les fichiers jar de la bibliothèque Web-inf. Enfin, il se déplacera vers un fichier jar avec une annotation EJB qu'il a déjà vu, car il a déjà été traité plus tôt - cela le fait se plaindre avec "Un composant nommé xxx est déjà défini".
Donc, la partie la plus frustrante ici est qu'il s'agit probablement d'un ancien fichier jar qui ne vous intéresse même pas qui contient cette entrée de manifeste Classpath inutile - et fait que JBoss récurrente sur lui-même.
J'ai eu le même problème mais pour moi aucune des solutions suggérées n'a aidé. J'ai remarqué que le EJB JAR
était présent twice
(newest version and older version
) dans le WEB.WAR.
Cela est dû au fait que l'opération de nettoyage maven
sur le projet parent dans Eclipse ne s'est pas répercutée en cascade sur les projets enfants. Je l'ai corrigé en faisant un simple "mvn clean"
sur le child project
.
Exécution des objectifs Maven:
wildfly:undeploy
clean
wildfly:deploy
aidé dans notre cas:
[ERREUR] Causée par: Java.lang.IllegalArgumentException: WFLYEE0040: Un composant nommé 'xxx' est déjà défini dans ce module "}}
J'ai eu le même problème dans IntelliJ. La raison en était qu'IntelliJ a créé un fichier WAR avec mes classes à la fois dans WEB-INF/classes ET en tant que fichier Jar distinct dans WEB-INF/lib.
Il m'a fallu un certain temps pour découvrir pourquoi IntelliJ a fait cela. La raison réside dans le dialogue Fichier -> Structure du projet -> Artefacts:
Après avoir supprimé la sortie de compilation "vertrag-ui-war", l'erreur ne s'est plus produite. P.S. Je n'ai aucune idée pourquoi IntelliJ a fait ce réglage - je n'ai définitivement pas réglé cela.
La suppression de @Singleton a corrigé cette erreur pour moi. Je ne sais pas pourquoi cependant.
Le problème n'est pas que vous ne créez pas TimeServiceDispatcher
c'est une partie de classe du framework de couture org.jboss.seam.async.TimerServiceDispatcher
, c'est une classe fw de couture.
Maintenant sur l'erreur.
Ce type d'erreur se produit en cas de conflits dans les bibliothèques fournies avec l'application et par le serveur. C'est vraiment très courant avec JBoss 7.1 et très frustrant aussi.
Tu dois savoir
Maintenant, pour les bibliothèques qui sont des deux côtés, vérifiez la version
si la version de l'application et de JBoss est la même, supprimez ce pot de Application (suggéré) (sinon vous pouvez configurer dans le fichier deployment-structure.xml lequel utiliser)
si la version de jar d'application et de jboss est différente, dans ce cas, vous devrez configurer dans le descripteur de déploiement lequel choisir.
Lors du copier-coller et de la création de nouveaux composants, j'ai oublié de mettre à jour la valeur que l'annotation @Stateless(value)
accepte dans les nouveaux composants. Cela signifiait que j'avais deux composants avec le même nom et j'ai eu cette erreur. J'espère que cela aide quelqu'un.