vRaptor - Problema na injeção do EntityManager

6 respostas
wariows

Bom dia,

Andei pesquisando sobre esse problema, e inclusive encontrei vários tópicos no fórum do vRaptor mas todos sem resposta…
O problema é o seguinte: Uso o vRaptor com o plugin de JPA, acontece que a anotação @PersistenceContext só funciona quando o EntityManager é um atributo do meu Controller/Logic/Action, ou seja, só injeta na minha classe anotada como @Component e eu preciso que o EntityManager seja injetado no meu DAO…

Alguma sugestão?
[]´s

6 Respostas

marcelo_mococa

A inversão de controle só funciona nos componentes que são gerenciados pelo vRaptor.

Isto é o mesmo para EJB3, spring, etc…

É impossível injetar a dependência em um bean que não é você quem controla seu ciclo de vida.

wariows

O Spring me injeta o que eu quiser, aonde eu quiser, basta configurar meu springbean… uso o mesmo esquema do EntityManager no DAO com struts2 + spring e funciona tranquilamente…

marcelo_mococa

provavelmente porque o spring controla o ciclo de vida do seu DAO. Você deve usar algum DAOSupport, correto?

jgbt

Como ja foi dito, o VRaptor so consegue fazer a injeção em objetos gerenciados por ele, no seu caso as Actions.
Seu DAO provavelmente deve ser gerenciado pelo Spring, então sera o Spring que fara a injeção.

[]´s

wariows

Junto com o vRaptor eu também utilizo o plugin do Spring, e o spring gerencia o ciclo de vida do meu DAO, tem como combinar a injeção do vRaptor com a do Spring nesse caso ou eu terei de colocar o EntityManager no controlador?

[]´s

marcelo_mococa

Você deve usar a injeção do spring e não a do vRaptor neste caso.

Faça com que o spring injete o EntityManager no DAO.

Criado 17 de dezembro de 2008
Ultima resposta 17 de dez. de 2008
Respostas 6
Participantes 3