Boa tarde a todos,
Estou começando meu contato com o JBoss 5.0.1 há algumas semanas. Já vi algumas coisas sobre EJB e injeção.
Mas estou tendo um problema nada a ver com isso e que, pelo que o AS diz, tem a ver.
Toda vez que eu tento fazer o deployment da minha aplicação com um jar específico (jar de uma lib que fizemos internamente), o AS diz o seguinte:
java.lang.IllegalStateException: Found multiple injection targets with different types
at org.jboss.injection.InjectionUtil.injectionTarget(InjectionUtil.java:322)
at org.jboss.injection.PersistenceContextHandler.loadXml(PersistenceContextHandler.java:64)
…
O grande lance aqui é que meu jar já era utilizado em aplicações que rodavam no Tomcat. Esse JAR nada tem a ver com injeção. Nem tem anotações em nada, nem XML nenhum em META-INF. O que pode ser??
Um abraço e obrigado desde já pela atenção de todos.
Acabei de descobrir, fazendo algumas buscas e encontrando o código do JBoss, essa classe InjectionUtil pertence ao módulo jboss-ejb3-core.
O engraçado é que esse meu jar não sabe nem o que significa EJB. ¬¬"
Bom, fucei bastante, revirei e não achei a raiz do problema.
Decidi então “desmontar” o jar. E fazer o deployment do jar aos poucos.
Tudo normal até chegar no pacote “dao”, quando deu o erro que eu já conhecia.
Abri um dos DAO’s pra ver o que tinha de diferente: um método estava anotado como @PersistentContext !!!
Lembrei então que na época, o rapaz que programou utilizou o engine de engenharia reversa do HibernateTools para gerar os VO’s, assim como eu. O problema é que foram gerados os DAO’s também. E o HibernateTools gera no padrão EJB3, anotando alguma coisa como @PersistentContext.
E pelo meu estudo, o AS injeta o contexto pesistente configurado em xml no meu POJO. Bom, baixei o projeto do CVS, removi essas anotações, recompilei, recriei o Jar. Fiz o deployment e pronto! Funcionou.
Apenas para fins de registro. No começo, o erro no log do JBoss era algo falando sobre persistent unit “null”.