Anotação @Component do VRaptor 3 não funciona  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Olá pessoal,

Estou com um tempo livre e estou dando uma olhada no VRaptor, usando como base a apostila do curso FJ-28 da Caelum.
No exercício 10 do capítulo 7 é ensinado usar a anotação @Component no ProdutoDao para que esse seja injetado pelo Spring no ProdutoController, entretanto mesmo usando a anotação, o erro do Spring (que não consegue criar a dependência ProdutoDao em ProdutoController) persiste.

O que posso estar fazendo errado?

[]'s

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
raf4ever
GUJ Master

Membro desde: 30/01/2005 01:34:51
Mensagens: 1755
Localização: Fortaleza-Ce
Offline

Posta o stacktrace e os códigos.

Rafael Roque
Quis custodiet ipsos custodes?
IBM Certified SOA Associate
ITIL Foundations Certified
SCEA(I)
SCWCD
SCJP
[Email] [MSN]
maiconkeller
Smalltalk
[Avatar]

Membro desde: 30/05/2009 10:18:36
Mensagens: 4
Offline

Verifique se o web.xml está configurado corretamente, contendo as configurações do VRaptor:


Verifique se o import está correto


cheque se o ProdutoController tem o atributo ProdutoDao adicionado no construtor corretamente.

ex.:


Confira os jars que você tem na pasta lib se estão corretos.

This message was edited 1 time. Last update was at 17/10/2011 13:30:10

[WWW] [Yahoo!] [MSN]
davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Maicon, está tudo ok, o VRaptor está configurado corretamente.
Está tudo igual à apostila e os outros exemplos estão funcionando.
O problema é a injeção.

raf4ever, segue o stack trace:

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
maiconkeller
Smalltalk
[Avatar]

Membro desde: 30/05/2009 10:18:36
Mensagens: 4
Offline

David, boa tarde!

Reproduzi o erro removendo a anotação @Component da classe ProdutoDao e também substituíndo o "import br.com.caelum.vraptor.ioc.Component;" por "import org.springframework.stereotype.Component;".
Pode ser que esteja com algum outro problema, mas a principio veja novamente se está fazendo o import corretamente.
Eu percebi que você esta usando Hibernate, e é a única variação que encontrei entre seu exemplo e o meu código. Veja se não tem nenhum outro problema com a classe produtoDao onde a mesma nao consegue ser compilada ou qualquer outro problema no seu hibernate.cfg.xml.

Lembrando que a produtoDao tem que ficar com o import correto conforme exemplo abaixo:



abs.

[WWW] [Yahoo!] [MSN]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

o noSuchMethodError geralmente é imcompatibilidade de versão de jars...

você está com mais de uma versão do hibernate no classpath? está fazendo o deploy da aplicação no jboss?

--
Caelum
www.caelum.com.br

davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Lucas Cavalcanti wrote:o noSuchMethodError geralmente é imcompatibilidade de versão de jars...

você está com mais de uma versão do hibernate no classpath? está fazendo o deploy da aplicação no jboss?


Oi Lucas,

Estou com a versão 4.0 CR4 do Hibernate.
O problema é no Hibernate... Olhei com mais calma todo o Stack Trace e está dando problema na hora de criar a SessionFactory.
O engraçado é que se eu estar o Dao sem ser injetado pelo Spring, a sessão é criada normalmente. O problema só acontece quando o Spring tenta instanciar o Dao.
Enfim, hoje estou um pouco enrolado, mas amanhã vou trocar a versão para ver se resolvo o problema.

[]'s

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
Lucas Cavalcanti
GUJ Hacker
[Avatar]

Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline

mas tem outra lib do hibernate no classpath? o problema é que essa versão pode ser incompatível com o spring (a AnnotationConfiguration estava deprecated, e deve ter sido removida ou algo do tipo)

tenta usar o hibernate 3.6.x

This message was edited 1 time. Last update was at 18/10/2011 09:47:00


--
Caelum
www.caelum.com.br

davidbuzatto
Moderador
[Avatar]

Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline

Lucas Cavalcanti wrote:mas tem outra lib do hibernate no classpath? o problema é que essa versão pode ser incompatível com o spring (a AnnotationConfiguration estava deprecated, e deve ter sido removida ou algo do tipo)

tenta usar o hibernate 3.6.x


Oi Lucas,

Eu já mudei o código para usar a classe Configuration (que deve ser usada no lugar na AnnotationConfiguration) e mesmo assim o problema persistiu.
Vou tentar atualizar o Spring também para a versão compatível com o Hibernate 4.

[]'s

Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."

http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm
[WWW]
thiago-dev
Entusiasta Java

Membro desde: 25/07/2008 14:27:02
Mensagens: 15
Offline

davidbuzatto, travei no mesmo exercício que você relata no inicio do seu post.
As diferenças são: estou usando JPA (implementação hibernate), deixei as classes de negócio (Produto, ProduoDao e etc...) em um outro projeto Java padrão, que chamo de base e no projeto web estou deixando coisas de view e apresentação (jsps, ProdutoController e etc...).
Todos os testes do projeto base estão passando.
Meu problema é a injeção do ProdutoDao no ProdutoController. Se eu instanciar ele diretamente, sem recebê-lo no construtor, ou copiar o pacote onde ProdutoDao está no projeto base para dentro do projeto web, para que ele seja injetado, tudo funciona perfeitamente.
Mas recebo o erro de injeção, se deixar ProdutoDao dentro do projeto base.
Todas as checagens que foram sugeridas aqui (principalmente as passadas pelo maiconkeller), eu já fiz.
Pelo o que analisei o Stack trace error, não é apresentado o problema com versão de .jar e eu já associei o projeto base em ?Project References? e em ?Deployment Assembly?.
Alguém tem alguma idéia do que mais posso fazer para tentar resolver o problema?
Segue stack do Tomcat:

thiago-dev
Entusiasta Java

Membro desde: 25/07/2008 14:27:02
Mensagens: 15
Offline

thiago-dev wrote:davidbuzatto, travei no mesmo exercício que você relata no inicio do seu post.
As diferenças são: estou usando JPA (implementação hibernate), deixei as classes de negócio (Produto, ProduoDao e etc...) em um outro projeto Java padrão, que chamo de base e no projeto web estou deixando coisas de view e apresentação (jsps, ProdutoController e etc...).
Todos os testes do projeto base estão passando.
Meu problema é a injeção do ProdutoDao no ProdutoController. Se eu instanciar ele diretamente, sem recebê-lo no construtor, ou copiar o pacote onde ProdutoDao está no projeto base para dentro do projeto web, para que ele seja injetado, tudo funciona perfeitamente.
Mas recebo o erro de injeção, se deixar ProdutoDao dentro do projeto base.
Todas as checagens que foram sugeridas aqui (principalmente as passadas pelo maiconkeller), eu já fiz.
Pelo o que analisei o Stack trace error, não é apresentado o problema com versão de .jar e eu já associei o projeto base em ?Project References? e em ?Deployment Assembly?.
Alguém tem alguma idéia do que mais posso fazer para tentar resolver o problema?
Segue stack do Tomcat:



Resolvido;

Caso alguém passe pelo mesmo problema:

Basta cadastrar um componente opcional no web.xml e criar a devida classe de provider para registrar o ProdutoDao (que pode estar em outro projeto como no meu caso), todo o processo está detalhado na documentação do framework em:
http://vraptor.caelum.com.br/documentacao/componentes-utilitarios-opcionais/


Thiago Santana
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team