Open session in view + Vraptor 3.4.1 + Hibernate 4.1.5.SP1

Alguém consegue identificar o erro? Preciso implementar alguma classe de sessionfactory ou algo do tipo? Existe algum projeto vazio com Vraptor + Hibernate funcionando com open session on view que eu possa baixar, ou alguem poderia linkar os arquivos?

ERRO:

12:48:22,705 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor 02/08/2012 12:48:22 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet [default] in context with path [] threw exception org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'noticiaControlador': Unsatisfied dependency expressed through constructor argument with index 0 of type [br.aaaaaaaaaa.site.dao.NoticiaDao]: : Error creating bean with name 'noticiaDao': Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : Error creating bean with name 'br.com.caelum.vraptor.util.hibernate.SessionCreator': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionCreator': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'br.com.caelum.vraptor.util.hibernate.SessionCreator': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionCreator': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'noticiaDao': Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : Error creating bean with name 'br.com.caelum.vraptor.util.hibernate.SessionCreator': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionCreator': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'br.com.caelum.vraptor.util.hibernate.SessionCreator': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionCreator': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:329) at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:263) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1083) at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:86) at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:46) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56) at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54) at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:44) at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91) at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58) at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:185) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:269) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:679) Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'noticiaDao': Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : Error creating bean with name 'br.com.caelum.vraptor.util.hibernate.SessionCreator': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionCreator': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session;; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'br.com.caelum.vraptor.util.hibernate.SessionCreator': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionCreator': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:730) at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:196) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1003) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:907) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:485) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:329) at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:844) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:786) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723) ... 42 more Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'br.com.caelum.vraptor.util.hibernate.SessionCreator': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionCreator': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:149) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109) at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1429) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:245) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190) at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:844) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:786) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:703) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:795) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:723) ... 56 more Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionCreator': Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1413) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) at org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:329) at org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:325) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBean(DefaultListableBeanFactory.java:263) at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1083) at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:86) at br.com.caelum.vraptor.ioc.spring.ComponentFactoryBean.getObject(ComponentFactoryBean.java:43) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142) ... 65 more Caused by: java.lang.NoSuchMethodError: org.hibernate.SessionFactory.openSession()Lorg/hibernate/classic/Session; at br.com.caelum.vraptor.util.hibernate.SessionCreator.create(SessionCreator.java:47) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:340) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:293) at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130) ... 78 more

WEB.XML

[code]<?xml version="1.0" encoding="UTF-8"?>

site2012

index.jsp

<!-- configura o controlador do VRaptor -->
<filter>
	<filter-name>vraptor</filter-name>
	<filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
</filter>

<filter-mapping>
	<filter-name>vraptor</filter-name>
	<url-pattern>/*</url-pattern>
	<dispatcher>FORWARD</dispatcher>
	<dispatcher>REQUEST</dispatcher>
</filter-mapping>

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

<context-param>
	<param-name>br.com.caelum.vraptor.encoding</param-name>
	<param-value>UTF-8</param-value>
</context-param>

<context-param>
	<param-name>javax.servlet.jsp.jstl.fmt.locale</param-name>
	<param-value>pt_BR</param-value>
</context-param>

<context-param>
	<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
	<param-value>messages</param-value>
</context-param>

<jsp-config>
	<taglib>
		<taglib-uri>http://www.aaaaa.br/taglibs/strtag</taglib-uri>
		<taglib-location>/WEB-INF/tags/string.tld</taglib-location>
	</taglib>
	<taglib>
		<taglib-uri>http://www.aaaaa.br/taglibs/frmtag</taglib-uri>
		<taglib-location>/WEB-INF/tags/form.tld</taglib-location>
	</taglib>

	<jsp-property-group>
		<url-pattern>*.jsp</url-pattern>
		<include-prelude>/WEB-INF/jsp/topo.jspf</include-prelude>
		<include-coda>/WEB-INF/jsp/base.jspf</include-coda>
		<trim-directive-whitespaces>true</trim-directive-whitespaces>
		<page-encoding>UTF-8</page-encoding>
	</jsp-property-group>
</jsp-config>

[/code]

CONTROLADOR:

[code]package br.aaaaaaaaaa.modulo.adm.controlador;

import java.text.ParseException;

import org.springframework.beans.factory.annotation.Autowired;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.Validations;
import br.aaaaaaaaaa.contrato.ControladorCrud;
import br.aaaaaaaaaa.infra.ListaPaginada;
import br.aaaaaaaaaa.site.dao.NoticiaDao;
import br.aaaaaaaaaa.site.dao.TipoNoticiaDao;
import br.aaaaaaaaaa.site.modelo.Noticia;
import br.aaaaaaaaaa.util.Texto;

@Resource
public class NoticiaControlador implements ControladorCrud {
private NoticiaDao noticiaDao;
private TipoNoticiaDao tipoNoticaDao;
private Result result;
private Validator validator;

public NoticiaControlador(NoticiaDao noticiaDao, TipoNoticiaDao tipoNoticaDao, Result result, Validator validator) {
	this.noticiaDao = noticiaDao;
	this.tipoNoticaDao = tipoNoticaDao;
	this.result = result;
	this.validator = validator;
}

public void index() {
	result.redirectTo(this).pesquisar(new Noticia(), "", "");
}

public void exibirFormulario() {
	result.include("tipoNoticia", tipoNoticaDao.listaTudo());
}

@Post()
public void inserir(final Noticia noticia) throws ParseException {
	validator.checking(new Validations() {
		{
			that(noticia.getTiponoticia() != null, "erro", "vazio", "Tipo de Notícia");
			that(!Texto.isEmpty(noticia.getTitulo()), "erro", "vazio", "Título");
			that(!Texto.isEmpty(noticia.getResumo()), "erro", "vazio", "Resumo");
			that(!Texto.isEmpty(noticia.getCorpo()), "erro", "vazio", "Corpo");
			that(!Texto.isEmpty(noticia.getFonte()), "erro", "vazio", "Fonte");
		}
	});

	validator.onErrorRedirectTo(this).exibirFormulario();
	noticiaDao.inserir(noticia);
	result.include("sucesso", "inserir.sucesso");
	result.redirectTo(this).pesquisar(noticia, "", "");
}

public Noticia carregar(final Noticia noticia) {
	return (Noticia)noticiaDao.carregar(noticia);
}

@Post()
public void editar(Noticia noticia) {
	noticiaDao.editar(noticia);
	result.include("sucesso", "editar.sucesso");
	result.redirectTo(this).pesquisar((Noticia)noticia, "", "");
}

public void excluir(final Noticia noticia) {
	noticiaDao.excluir(noticia);
	result.include("sucesso", "excluir.sucesso");
	result.redirectTo(this).pesquisar((Noticia)noticia, "", "");
}

public ListaPaginada<Noticia> pesquisar(final Noticia noticia, String pagPaginaAtual, String pagOrdem) {
	result.include("noticia", noticia);
	return noticiaDao.pesquisar(noticia, pagPaginaAtual, pagOrdem);
}

}[/code]

adiciona isso no seu web.xml

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

puts, agora que prestei atenção , vc ta usando hibernate 4 , acho eu que o provider do vraptor que postei é pra versão 3

[quote=DaniloAndrade]adiciona isso no seu web.xml

<context-param> <param-name>br.com.caelum.vraptor.provider</param-name> <param-value>br.com.caelum.vraptor.util.hibernate.HibernateCustomProvider</param-value> </context-param> [/quote]

Já tentei isso, e com todas combinações…

Vc já leu essa pagina http://vraptor.caelum.com.br/documentacao/componentes-utilitarios-opcionais/

Sim.

cara,

acho que vc vai ter que criar um provider pra versão 4 do hibernate, eu tenho um projeto aqui onde eu uso o provider do vraptor mas é com a versão 3 do hibernate

Alguém pode confirmar por favor se essa solução do vraptor não funciona para o hibernate 4.1.5.SP1? Se realmente não funcionar como posso implementar?

pra usar o hibernate 4 vc precisa usar esse plugin:

o que vem com o vraptor só funciona com o hibernate 3

[]'s

[quote=Lucas Cavalcanti]pra usar o hibernate 4 vc precisa usar esse plugin:

o que vem com o vraptor só funciona com o hibernate 3

[]'s[/quote]

Com o plugin funcionou, muito obrigado pela informação preciosa.

Ainda tive que mexer no meu web.xml e colocar essas linhas:

<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property> <property name="current_session_context_class">thread</property>
Valeu DaniloAndrade e Lucas Cavalcanti.

persistence.xml, né? não web.xml