Spring - BeanNotOfRequiredTypeException

7 respostas
Guilherme_Gomes

Bom dia a todos,

Estou com um problema em Spring (2.5.6).

Tenho um módulo WEB que foi exportado para um JAR e colocado nas bibliotecas do tomcat, fazendo isso, todas as aplicações nesse tomcat ganham várias páginas e funcionalidades. Esse módulo é o core da nossa aplicação. Cada app web nesse tomcat pode fazer especializações, utilizando as classes e páginas do core.

Todas essas aplicações usam JSF, Richfaces, Facelets, Hibernate, JPA e Spring.

Existe um outro módulo que depende desse core que também está no tomcat, uma das classes nele tem injeção de dependencia de uma classe DAO do core, mais ou menos assim:

public class ProdutoDAO{
  //Essa classe fica dentro do JAR do core
  ...
}

...

public class ImportacaoMB{
  //Essa classe fica no segundo modulo, que depende do core
  @Resource
  private ProdutoDAO produtoDAO;
  ...
}

O segundo modulo, quando rodado na minha maquina de desenvolvimento (ele sendo a aplicação WEB com o JAR do core) roda normalmente. Mas quando coloco os dois como JARs dentro do tomcat, recebo esse erro:

Olhando o codigo exemplo e erro já dá pra deduzir meu problema, caso não tenha sido claro. Só precisam ter em mente que são dois JARs a parte que estão como bibliotecas do tomcat.

Obrigado,

7 Respostas

Guilherme_Gomes

Ninguem? Realmente estou precisando de uma resposta!

Mero_Aprendiz

Bem, não sou o maior especialista em Spring; menos ainda em Tomcat, mas em uma busca rápida pela net vi que algumas pessoas tiveram problemas semelhantes ao seu, por terem libs dentro da pasta de libs do Tomcat.
Minha pergunta é a seguinte:

  • A pasta lib do Tomcat é o melhor lugar pra colocar esse jar mesmo? =/

[]'s
JL

Guilherme_Gomes

Sim, pois todas as minhas aplicaçoes naquele tomcat usam as paginas, classes e recursos do core. Se eu tiro do tomcat e coloco em cada aplicação, alem de ficar maluco na hora de prestar manutenção, o uso de memória vai lá pro alto.

Alexandre_Saudate

Dá esse erro porque o Spring precisa que suas classes de recursos implementem interfaces… o Spring sempre transforma os beans em proxies, de maneira que eles não são mais o bean original. Entretanto, tudo funciona bem quando você faz sua classe implementar uma interface, e passa a referenciar essa interface.

[]´s

Guilherme_Gomes

Meu sistema está bem desacoplado, tudo funciona legal e através de interfaces.
Quanto a essa parte de proxies, eu sei, o estranho é que quando coloco o core no tomcat e o segundo modulo na aplicacao, tudo funciona direitinho. Mas ao colocar o segundo modulo no tomcat tbm que lanca esse erro!

Alexandre_Saudate

Guilherme Gomes:
Meu sistema está bem desacoplado, tudo funciona legal e através de interfaces.
Quanto a essa parte de proxies, eu sei, o estranho é que quando coloco o core no tomcat e o segundo modulo na aplicacao, tudo funciona direitinho. Mas ao colocar o segundo modulo no tomcat tbm que lanca esse erro!

Não seria conflito de nomes (duas classes com o mesmo nome) ?

[]´s

Guilherme_Gomes

Não por duas razões:

  1. O meu sistema inicializa normal, só quando a pagina é acessada que lança o erro.
  2. Não daria uma BeanNotOfRequiredTypeException
Criado 27 de janeiro de 2010
Ultima resposta 28 de jan. de 2010
Respostas 7
Participantes 3