Вопрос по java, spring, jboss7.x, jboss, spring-3 – Компонент с именем «XXX» уже определен в этом модуле в JBoss 7.1.1

20

Я не создал имя боба весны сTimerServiceDispatcher в моем приложении. Но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 развертывания-structure.xml


  
      
          
          
          
          
          
        
        
            
               
    
 

Структура деплимента

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

Ваш Ответ

8   ответов
12

Я знаю ответ на этот. Провела недели с поддержкой JBoss из-за моего упрямства. Они планируют обеспечить исправление или, по крайней мере, лучший обмен сообщениями с выпуском EAP 6.2.x.

Проблема возникает с препроцессорами EJB Annotation, которые берут вашу войну, и библиотеки, скомпилированные в нее, сканируют их для аннотаций EJB. Некоторые файлы Jar могут иметь запись в "Манифесте" дляClasspath:. " (или что угодно, но с «.» как одна из записей). Это приводит к тому, что препроцессор аннотирования снова идиотски обрабатывает все файлы jar в библиотеке web-inf. Наконец, он перейдет к файлу jar с аннотацией EJB, которую он уже видел, потому что он уже был обработан ранее - это заставляет его жаловаться »Компонент с именем xxx уже определен ".

Так что самое неприятное здесь то, чтоВозможно, какой-то старый файл JAR, который вы неЭто даже не заботит, что в нем есть эта ненужная запись манифеста Classpath - и это заставляет JBoss возвращаться к себе.

Ладно, похоже, это касается и меня, но как вы это исправили - то есть, если вы это сделали? Carolik
Как решить вышеуказанную проблему? Jet
Найдите файл фляги, который выиспользовать (следите за зависимостями) - это 'Скорее всего, пользовательский файл JAR, а не что-то в Maven. Откройте его, отредактируйте манифест и удалите "." из записи Classpath, указанной в manifest.mf, затем восстановите ее. Скорее всего, это будет одна из фляг, которая фактически развернута вместе с приложением war или ear и т. Д. djchapm
20

У меня был компонент, аннотированный @Singleton и @Stateless, который вызвал эту ошибку. Мой код был, конечно, неправильным, но сообщения и подобные сообщения на некоторое время ведут меня по неверному пути.

Это также относится, конечно, к@Singleton а также@Stateful, Спасибо, этот ответ действительно помог мне быстро найти проблему. Stephan
+1 Этот ответ быстро решил мою проблему. Я нене думаю, что этоЭто очевидно, что аннотации Stateless и Singleton не должныидти вместе Тем не мение "Компонент с именем 'Foo» уже определен в этом модуле не очень полезно null
Почему вы говорите "Мой код был, конечно, не так? У нас есть эта проблема, у нас есть такие аннотации, но я нене знаю, что с ними не так. Они работали нормально, пока мы не обновили JDK до 1.7.0_60. Redboots
Я говорю это потому, что типы бинов Singleton и Stateless - это в основном 2 разных типа bean. Я хочу сказать, что они взаимоисключающие. Бин-одиночка говорит один бин для всех клиентских вызовов, что подразумевает этобез гражданства по своей природе. Поэтому я считаю, что JBoss в конечном итоге развернет компонент дважды, один раз как компонент без гражданства и один раз как синглтон, что приводит к конфликту имен. Piwaf
+1. Я сделал ту же ошибку. Это сообщение об ошибке может использовать некоторые улучшения. Nikola Kolev
0

При копировании и создании новых компонентов я забыл обновить значение@Stateless(value) аннотацию принимаем в новых комплектующих. Это означало, что у меня было два компонента с одинаковым именем, и я получил эту ошибку. Надеюсь, это кому-нибудь поможет.

0

Проблема не в том, что вы не создаетеTimeServiceDispatcher это классная часть каркаса шваorg.jboss.seam.async.TimerServiceDispatcher Это шов класса FW.

Теперь об ошибке.

Подобные ошибки возникают, когда в библиотеках, предоставляемых приложением, и на сервере возникают конфликты. Это серьезно очень часто встречается с JBoss 7.1 и очень расстраивает.

Ты должен знать

  1. Какие все библиотеки и их версии находятся внутри вашего приложения?
  2. какие все вышеперечисленные библиотеки и версии предоставлены JBoss 7.1

Теперь для библиотек, которые находятся на обеих сторонах, проверьте версию

если версия приложения и JBoss одинаковы, то удалите этот jar-файл из Application (рекомендуется) (иначе вы можете указать в файле deploy-structure.xml, какой использовать)

если версия приложения jar и jboss отличается, в этом случае вам нужно будет указать в дескрипторе развертывания, какой из них выбрать.

@CycDemo, это нормально, но вам также нужно разрешать конфликты библиотек. Вы можете опубликовать структуру вашей войны? использованиеjar -tf nameofwar.war и опубликовать результат? Mukul Goel
Я использовал jboss-deploy-structure.xml Zaw Than oo
@CycDemo, причина вашей ошибки в том, что я пытаюсь объяснитьlibrary/version conflict а не наличие или отсутствие,jboss-deployment-structure.xml Mukul Goel
@CycDemo, не могли бы вы пообщаться в чате? иначе здесь будет долгая дискуссия? Mukul Goel
1

Удаление @Singleton исправило эту ошибку для меня. Не знаю почему, хотя.

4

Выполнение целей Maven:

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

помогло в нашем случае:

[ОШИБКА] Причина: java.lang.IllegalArgumentException: WFLYEE0040: компонент с именем 'ххх» уже определен в этом модуле}}

6

У меня была такая же проблема, но для меня ни одно из предложенных решений не помогло. Я заметил, чтоEJB JAR присутствовал (twicenewest version and older version) вWEB.WAR.

Это было потому, чтоmaven чистая операция над родительским проектом в EclipseT каскад для дочерних проектов. Я исправил это, выполнив простую"mvn clean" на .child project

4

У меня была такая же проблема в IntelliJ. Причина была в том, что IntelliJ создал WAR-файл с моими классами как в WEB-INF / classes, так и в виде отдельного Jar-файла в WEB-INF / lib.

Мне потребовалось некоторое время, чтобы выяснить, почему IntelliJ сделал это. Причина кроется в диалоге Файл -> Структура проекта -> Артефакты:

После удаленияvertrag-щ войны» скомпилируйте вывод, ошибка больше не возникает. Постскриптум Я понятия не имею, почему IntelliJ сделал эту настройку - я окончательно не установил эту настройку.

Каким-то образом это было также для меня. Это нене имеет никакого смысла, но удаление вывода компиляции делает свое дело (я также не сделалне делать никаких настроек). MartK

Похожие вопросы