Problemas no uso do spring com o vraptor

18 respostas
F

Oi pessoal

Estou ultilizando o Vraptor e o maven e tentando inserir o spring. Criei uma SessionCreator e uma SessionFactoryCreator e tambem tenho o application.xml do spring.

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘produtoController’ defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\controller\ProdutoController.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.caelum.dao.ProdutoDao]: : Error creating bean with name ‘produtoDao’ defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘produtoDao’ defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\dao\ProdutoDao.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : Error creating bean with name ‘br.com.caelum.util.SessionCreator’: FactoryBean threw exception on object creation; nested exception is

Alguém pode me ajudar???

18 Respostas

Lucas_Cavalcanti

essa exception tem mais causas… dá uma olhada nelas, pode ser algum erro de configuração

F

Mas sem as configurações do spring, a aplicação funciona, já li todos os fórum do guj a respeito de erros parecidos e não consegui resolver.

Se incluir isso no web.xml, devo excluir minha sessionCreator e a sessionFactoryCreator? Ou é melhor usar o as duas classes mesmo.

br.com.caelum.vraptor.packages br.com.caelum.vraptor.util.hibernate

Lucas, qualquer coisa posso enviar o projeto para seu e-mail para vc avaliar? Pois não sei mais o que fazer para colocar o spring no projeto.

Muito grato pela atenção que vem prestando para mim, e para os demais colegas do guj.

Lucas_Cavalcanti

não precisa enviar o projeto, só mande aqui o resto da exception (talvez colado no pastebin.org)

F

Sou novo no guj o pastebin.org seria esse site? Se for colei o erro lá.

http://pastebin.com/rPvngKDh

Desde já muito grato.

F

Acho que não deu certo, enviar o erro para o pastebin. Segue abaixo o erro completo.

Grave: Servlet.service() for servlet default threw exception

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name produtoController defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\controller\ProdutoController.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [br.com.caelum.dao.ProdutoDao]: : Error creating bean with name produtoDao defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\dao\ProdutoDao.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : Error creating bean with name br.com.caelum.util.SessionCreator: FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name sessionCreator defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\util\SessionCreator.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name br.com.caelum.util.SessionCreator: FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name sessionCreator defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\util\SessionCreator.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name produtoDao defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\dao\ProdutoDao.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : Error creating bean with name br.com.caelum.util.SessionCreator: FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name sessionCreator defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\util\SessionCreator.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name br.com.caelum.util.SessionCreator: FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name sessionCreator defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\util\SessionCreator.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean

at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:591)

at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:193)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)

at java.security.AccessController.doPrivileged(Native Method)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)

at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)

at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:308)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:297)

at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:942)

at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:224)

at br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:242)

at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)

at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:41)

at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:81)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)

at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)

at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)

at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)

at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:291)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)

at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)

at java.lang.Thread.run(Unknown Source)

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name produtoDao defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\dao\ProdutoDao.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : Error creating bean with name br.com.caelum.util.SessionCreator: FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name sessionCreator defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\util\SessionCreator.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name br.com.caelum.util.SessionCreator: FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name sessionCreator defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\util\SessionCreator.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean

at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:591)

at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:193)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)

at java.security.AccessController.doPrivileged(Native Method)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)

at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)

at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:671)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:610)

at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:622)

at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:584)

 48 more

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name br.com.caelum.util.SessionCreator: FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name sessionCreator defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\util\SessionCreator.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean

at org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:127)

at java.security.AccessController.doPrivileged(Native Method)

at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:116)

at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:98)

at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1285)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:217)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:671)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:610)

at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:622)

at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:584)

 64 more

Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name sessionCreator defined in file [C:\Users\Gel\workspace.metadata.plugins\org.eclipse.wst.server.core\tmp2\wtpwebapps\testemaven5\WEB-INF\classes\br\com\caelum\util\SessionCreator.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.SessionFactory]: : No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean

at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:591)

at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:193)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:925)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:835)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)

at java.security.AccessController.doPrivileged(Native Method)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)

at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:302)

at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:308)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:297)

at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:942)

at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:224)

at br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:242)

at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)

at br.com.caelum.vraptor.ioc.spring.ComponentFactoryBean.getObject(ComponentFactoryBean.java:43)

at org.springframework.beans.factory.support.FactoryBeanRegistrySupport$1.run(FactoryBeanRegistrySupport.java:121)

 75 more

Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No unique bean of type [org.hibernate.SessionFactory] is defined: Unsatisfied dependency of type [interface org.hibernate.SessionFactory]: expected at least 1 matching bean

at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:613)

at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:622)

at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:584)

 95 more
Lucas_Cavalcanti

vc criou a classe que cria o SessionFactory?

pq vc não usa o componente do VRaptor que já cria isso automaticamente?
só colocar isso no seu web.xml:

<context-param>
    <param-name>br.com.caelum.vraptor.packages</param-name>
    <param-value>br.com.caelum.vraptor.util.hibernate</param-value>
</context-param>

e remover sua classe que cria a session.

F

Removi a SessionFactoryCreator e a SessionCreator.

Aparaceu o seguinte erro : http://pastebin.com/3FApEvL2

A classe ProdutoDao : http://pastebin.com/Bx9G7xwz

A classe ProdutoController : http://pastebin.com/zd9FKSNb

A classe Produto : http://pastebin.com/8gBCHMd9

O web.xml : http://pastebin.com/FPTZhj1S

O hibernate.cfg.xml : http://pastebin.com/epPekJRt

Será qual o problema??

Lucas_Cavalcanti

vc tá usando hibernate 4?

F

Estou usando o hibernate 4.

Olha o arquivo POM do maven : http://pastebin.com/mFPvxzAS

valeu mais uma vez Lucas.

Lucas_Cavalcanti

tira aquele pacote que eu passei do web.xml, e coloca esse plugin: https://github.com/garcia-jj/vraptor-plugin-hibernate4

F

Tirei do xml. Não coloquei as classes SessionFactoryCreator nem a SessionCreator no projeto.
Inserir o novo arquivo no POM. obs: Tive muitos problemas com conflitos.

Olhe como ficou o POM: http://pastebin.com/wbEq4muM

Agora tenho o seguinte erro: http://pastebin.com/djsdHSB5
Já estou quase desistindo de usar o spring, faz 5 dias que venho tentando. Me dê mais uma força ai por favor.

Se eu for usar um hibernate antes da versão 4, resolveria meu problema?

F

Agora inseri a SessionFactoryCreator e SessionCreator.
Coloquei o arquivo application.xml

Tenho o seguinte erro:

Grave: Exception starting filter vraptor

org.springframework.beans.factory.BeanCreationException: Error creating bean with name transactionManager defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider;

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)

at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.start(SpringBasedContainer.java:106)

at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:87)

at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)
Caused by: java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider;

at java.lang.Class.getDeclaredFields0(Native Method)

at java.lang.Class.privateGetDeclaredFields(Unknown Source)

at java.lang.Class.getDeclaredFields(Unknown Source)
Lucas_Cavalcanti

no class def found é pq deve estar faltando um jar… tenta colocar a versão do hibernate pra 3.6.10.Final, remover os Session*Creators, e colocar aquela configuração no web.xml que eu tinha te falado…

a culpa do que está acontecendo não é do spring, é problema de configuração no projeto.

F

Valeu Lucas, muito obrigado pela grande ajuda. Fiquei muito tempo me batendo com isso.

Removi a classe SessionCreator e o SessionFactoryCreator e também o arquivo application.xml (conf do spring) conforme pedido.
Coloquei o hibernate-3.6.10.Final e o VRaptor-3.4.1 e depois resolvi os conflitos dos jar no maven.

Removi o beginTrasaction e o Commit da classe ProdutoDao. Ela ficou assim:

@Component
public class ProdutoDao {

private final Session session;

public ProdutoDao(Session session) {
	this.session = session;
}

public void save(Produto produto) {
	try {
		// Transaction tx = session.beginTransaction();
		this.session.save(produto);
		// tx.commit();
	} catch (Exception ex) {
		System.out.println("erro");
	}
}

}

Obs: 1) Quando incio a aplicação aparece a seguinte menssagem: INFO [ReflectionInstanceCreator] No default constructor found for class br.com.caelum.controller.ProdutoController$$EnhancerByCGLIB$$b63caa86. Trying to create the proxy with other constructors (there are 1).
É normal essa mensagem?

  1. Quando tento fazer um debug na classe ProdutoDao, aparece a tela “source not found” no eclipse, como se eu não pudesse fazer debug.
    Utilizado o spring eu não poderei fazer debug no Dao? Ou isso é algum erro de configuração que fiz?

  2. Como estou usando as classes SessionCreator e o SessionFactoryCreator do Vraptor, pois coloquei as declarações no web.xml . Só vai ser aberta uma sessionFactory na aplicação, conforme o padrão da apostila fj28 da caelum?

  3. E como não preciso mais colocar o beginTrasaction() e o commit() nas transações, se houver erro ao tentar salvar, será feito um rollback? Preciso colocar o try catch ao tentar salvar ou o spring faz esse controle?

  4. Como faço para marcar como resolvido no fórum?

Lucas, desculpa por fazer tantas perguntas, mas é porque estou aprendendo java web agora e tenho muitas dúvidas.
Vou agradecer novamente sua atenção e dedicação que tem prestado para mim e os demais colegas do guj. Com certeza se não fosse sua ajuda eu não ia conseguir.

Muito obrigado, Valeu…

Lucas_Cavalcanti

tire o try…catch, vc está engolindo a exception, se vc fizer isso e der alguma exception vai dar pau no commit da transação sempre.

sim, é normal. O Spring gosta de ficar fazendo proxies das classes, principalmente se vc tá usando os módulos do spring (security, transaction, etc).

tb por causa do proxy. Mas se vc colocar um debug dentro de um método ele deveria ir pro source normal.

sim

sim, vc não deveria fazer os try…catchs, a menos que vc queira se recuperar da exceção.

só responder editando o título com [Resolvido] no começo

F

Valeu mais uma vez.
Só pra finalizar… Hoje tive algumas dúvidas, se for possível responde-las eu agradeço.

  1. É vantagem utilizar o spring? Ou terei mais problemas do que ganho de produtividade pois conheço quase nada sobre o spring?

  2. Tem alguma incompatibilidade do VRaptor com hibernate-4?

  3. Quando coloco isso no web.xml , automaticamente estou usando a sessionFactoryCreator do vraptor e o controle de transações do spring?

    br.com.caelum.vraptor.packages
    br.com.caelum.vraptor.util.hibernate

OBS: o Vraptor é fantástico para agilizar o desenvolvimento web, estou falando muito sobre ele para meus amigos.

Lucas_Cavalcanti
  1. se vc não for usar nada específico do spring, não precisa aprender nada a mais, o vraptor vai fazer tudo pra vc.

  2. o hibernate 4 mudou a api, então não funciona com os creators padrão do VRaptor, vc precisa usar o plugin do hibernate4 (que eu mandei em uma das msgs)

  3. não é o controle de transações do spring, é o do próprio vraptor, que abre a transação por request, e fecha no final dele.

F

[RESOLVIDO]

Muito obrigado Lucas.

Criado 28 de abril de 2012
Ultima resposta 29 de abr. de 2012
Respostas 18
Participantes 2