Problemas com HibernateTemplate

Seguinte pessoal,

Iniciei um projeto pra testar o VR3, seguindo os tutoriais disponíveis e consegui sem problemas fazer
funcionar, acesso ao mysql utlizando o hibernate e o spring, já que trabalham em conjunto o VR.

Mass, aí quis utilizar um GenericDao com o HibernateTemplate, e aí comecei a patinar buunito…

Abaixo segue a estrutura de classes que estou seguindo, e o erro no final.
e alguém puder me dar uma luz eu agradeço

OBS.: Agora o erro que está ocorrendo é em relação a Referência Circular, porém comecei a mexer
que acabei me perdendo mesmo, mas o primeiro erro era que ao tentar dar um getHibernateTemplate().xxxx
ocorria o seguinte erro:

Caused by: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'produtoDaoImpl' defined in file
 [D:\VRaptor\Projects\.metadata\.plugins\org.eclipse.wst.server.core
\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus
\dao\impl\ProdutoDaoImpl.class]: Invocation of init method failed; nested
exception is java.lang.IllegalArgumentException:

[color=red]'sessionFactory' or 'hibernateTemplate' is required [/color]

Enfim, repassando o código:

Vou partir do princípio que apenas quero listar uma tabela.


@Resource
public class ProdutosController<T> {

	private Result result;
	private IProdutoDao<Produto> dao;

	public ProdutosController(Result result, IProdutoDao<Produto> dao) {
		super();
		this.result = result;
		this.dao = dao;
	}


	public void lista() {
		Integer begin = 0;
		Integer maxResult = 3;
		result.use(Results.json()).from(dao.findAll(begin, maxResult)).serialize();  
	}
}

public interface IGenericDao<T> {

	/**
	 * Return all persistent instances of the given entity class. 
	 * Note: Use queries or criteria for retrieving a specific subset. 
	 * @return a List containing 0 or more persistent instances 
	 */
	public List<T> findAll();
	
	/**
	 * Execute a query based on the given Hibernate criteria object. 
	 * @param begin the index of the first result object to be retrieved (numbered from 0)
	 * @param maxResult the maximum number of result objects to retrieve (or <=0 for no limit) 
	 * @return a List containing 0 or more persistent instances 
	 */
	public List<T> findAll(Integer begin, Integer maxResult);
}

@Component
public class GenericDaoImpl<T> extends HibernateDaoSupport implements
		IGenericDao<T> {

	private static final Log log = LogFactory.getLog(GenericDaoImpl.class);
	private T typeClass;
	private HibernateTemplate hibernateTemplate;
	protected Session session;
	
	
	public GenericDaoImpl(T clazz, Session session) {
		this.typeClass = clazz;
		this.session = session;
		this.hibernateTemplate = createHibernateTemplate(this.session.getSessionFactory());
	}


	/* (non-Javadoc)
	 * @see br.com.tecnopolis.accessus.dao.GenericDao#findAll()
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<T> findAll() {
		log.debug("finding all " + typeClass.getClass().getName() + " instances");
		
		try {
			List<T> results = (List<T>) this.hibernateTemplate.loadAll(
					typeClass.getClass());
			log.debug("findAll successful, result size: " + results.size());
			return results;
		} catch (RuntimeException re) {
			log.error("findAll failed", re);
			throw re;
		}
	}


	/* (non-Javadoc)
	 * @see br.com.tecnopolis.accessus.dao.GenericDao#findAll(java.lang.Integer, java.lang.Integer)
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List<T> findAll(Integer begin, Integer maxResult) {
		log.debug("finding all " + typeClass.getClass().getName() + " instances from: "
				+ begin + " to: " + maxResult);
		try {
			DetachedCriteria criteria = DetachedCriteria.forClass(typeClass.getClass());
			List<T> results = (List<T>) this.hibernateTemplate.findByCriteria(
					criteria, begin, maxResult);
			log.debug("findAll successful, result size: " + results.size());
			return results;
		} catch (RuntimeException re) {
			log.error("findAll failed", re);
			throw re;
		}
	}

public interface IProdutoDao<T> extends IGenericDao<T> {

}

@Component
public class ProdutoDaoImpl<T> extends GenericDaoImpl<T> implements IProdutoDao<T> {

	public ProdutoDaoImpl(T clazz, Session session) {
		super(clazz, session);
	}
	
}

Bom e o erro que agora ocorre é:
[color=red]org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘produtosController’ defined in file [D:\VRaptor\Projects.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\controller\ProdutosController.class]: Unsatisfied dependency expressed through constructor argument with index 1 of type [br.com.tecnopolis.accessus.dao.IProdutoDao]: : Error creating bean with name ‘produtoDaoImpl’ defined in file [D:\VRaptor\Projects.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\dao\impl\ProdutoDaoImpl.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.lang.Object]: : Error creating bean with name ‘produtosController’: Requested bean is currently in creation: Is there an unresolvable circular reference?; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘produtosController’: Requested bean is currently in creation: Is there an unresolvable circular reference?; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name ‘produtoDaoImpl’ defined in file [D:\VRaptor\Projects.metadata.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\dao\impl\ProdutoDaoImpl.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [java.lang.Object]: : Error creating bean with name ‘produtosController’: Requested bean is currently in creation: Is there an unresolvable circular reference?; nested exception is org.springframework.beans.factory.BeanCurrentlyInCreationException: Error creating bean with name ‘produtosController’: Requested bean is currently in creation: Is there an unresolvable circular reference?
org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:591)
org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:193)[/color]

Desculpem por nao ter tirado os comentários, já que fiz apenas um copy/paste, e tem mais a questão de resolver isso rapidin.
Se quiser xingar pode xingar, mas não xinga a mãe, blz !!

Abraço e desculpe aí qualquer coisa…

Marcelo

Unsatisfied dependency expressed through constructor argument with index 1 of type [br.com.tecnopolis.accessus.dao.IProdutoDao]

Pelo erro ele não achou uma implementação para IProdutoDao. Verifique se sua implementação está no path para scan do spring. Aliás você está usando o hib gerenciado pelo vraptor ou pelo Spring? Se for pelo vraptor você não deve usar hibernate-template do spring, e caso for pelo spring você precisa verificar se essa classe está dentro do pacote que você definiu o scan-packages.

Obrigado por responder Garcia,

Meus pacotes estõ da seguinte forma:
br.com.tecnopolis.accessus.dao = Interface
br.com.tecnopolis.accessus.dao.impl = Implementações;

Qto ao gerenciamento do Hib, estou utilizando através do VR, pois não tenho
applicationContext na minha aplicação (não criado por mim).
Para utilizar devo ter um appContext, certo??

E pra ser franco, não saberia como criar o mesmo (scan-packages).

Por que não devo?

Sendo assim, o que devo fazer ?

Att,

Marcelo

se você usa os componentes do spring, vc DEVE ter um applicationContext.xml com as configurações deles…

se o que vc quer é só uma Session funcionando, você pode colocar 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>

e receber uma Session no construtor do seu dao. Assim o VRaptor controla Session’s e Transactions pra vc

Fiz algumas alterações nas classes (como podem ver abaixo), porém agora um novo erro.

@Resource
public class ProdutosController&lt;T&gt; {

	private Result result;
	private IProdutoDao&lt;Produto&gt; dao;

	public ProdutosController(Result result, IProdutoDao&lt;Produto&gt; dao) {
		super();
		this.result = result;
		this.dao = dao;
	}

	public void lista() {
		result.use(Results.json()).from(dao.findAll()).serialize();  
	}
@Component
public class ProdutoDaoImpl extends GenericDaoImpl&lt;Produto&gt; implements IProdutoDao&lt;Produto&gt; {
	/**
	 * @param session
	 */
	public ProdutoDaoImpl(Session session) {
		super(Produto.class, session);
	}
 }
public class GenericDaoImpl&lt;T&gt; extends HibernateDaoSupport implements
		IGenericDao&lt;T&gt;{

	private static final Log log = LogFactory.getLog(GenericDaoImpl.class);
	
	private Class&lt;T&gt; clazz;
	private Session session;
	
	
	/**
	 * @param clazz
	 */
	public GenericDaoImpl(Class&lt;T&gt; clazz, Session session) {
		this.clazz = clazz;
		this.session = session;
	}

	/* (non-Javadoc)
	 * @see br.com.tecnopolis.accessus.dao.GenericDao#findAll()
	 */
	@SuppressWarnings("unchecked")
	@Override
	public List&lt;T&gt; findAll() {
		log.debug("finding all " + clazz.getName() + " instances");
		
		try {
			List&lt;T&gt; results = (List&lt;T&gt;) getHibernateTemplate().loadAll(
					clazz);
			log.debug("findAll successful, result size: " + results.size());
			return results;
		} catch (RuntimeException re) {
			log.error("findAll failed", re);
			throw re;
		}
	}

}

Estou colocando toda a excessão…



16:35:03,875 DEBUG [DefaultResourceTranslator] trying to access /produtos/lista
16:35:03,890 DEBUG [DefaultResourceTranslator] found resource {DefaultResourceMethod: 



br.com.tecnopolis.accessus.controller.ProdutosController.lista}
18/12/2009 16:35:05 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'produtosController' defined in file [D:\VRaptor\Projects\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\controller\ProdutosController.class]: Unsatisfied dependency expressed through constructor argument with index 1 of type [br.com.tecnopolis.accessus.dao.IProdutoDao]: : Error creating bean with name 'produtoDaoImpl' defined in file [D:\VRaptor\Projects\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\dao\impl\ProdutoDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'produtoDaoImpl' defined in file [D:\VRaptor\Projects\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\dao\impl\ProdutoDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
	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:215)
	at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:61)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:41)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:41)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:48)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.util.hibernate.HibernateTransactionInterceptor.intercept(HibernateTransactionInterceptor.java:45)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:41)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
	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:128)
	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:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'produtoDaoImpl' defined in file [D:\VRaptor\Projects\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\dao\impl\ProdutoDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1337)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
	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)
	... 51 more
Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
	at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:117)
	at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
	... 64 more
16:35:48,625 DEBUG [DefaultResourceTranslator] trying to access /produtos/lista
16:35:48,625 DEBUG [DefaultResourceTranslator] found resource {DefaultResourceMethod: br.com.tecnopolis.accessus.controller.ProdutosController.lista}
18/12/2009 16:37:43 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'produtosController' defined in file [D:\VRaptor\Projects\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\controller\ProdutosController.class]: Unsatisfied dependency expressed through constructor argument with index 1 of type [br.com.tecnopolis.accessus.dao.IProdutoDao]: : Error creating bean with name 'produtoDaoImpl' defined in file [D:\VRaptor\Projects\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\dao\impl\ProdutoDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'produtoDaoImpl' defined in file [D:\VRaptor\Projects\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\dao\impl\ProdutoDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
	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:215)
	at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:61)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:41)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:41)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:48)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.util.hibernate.HibernateTransactionInterceptor.intercept(HibernateTransactionInterceptor.java:45)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:41)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)
	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:128)
	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:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'produtoDaoImpl' defined in file [D:\VRaptor\Projects\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\accessus\WEB-INF\classes\br\com\tecnopolis\accessus\dao\impl\ProdutoDaoImpl.class]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1337)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)
	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)
	... 51 more
Caused by: java.lang.IllegalArgumentException: 'sessionFactory' or 'hibernateTemplate' is required
	at org.springframework.orm.hibernate3.support.HibernateDaoSupport.checkDaoConfig(HibernateDaoSupport.java:117)
	at org.springframework.dao.support.DaoSupport.afterPropertiesSet(DaoSupport.java:44)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
	... 64 more

Aahhh e no web.xml possui as linhas:

	&lt;context-param&gt;
	    &lt;param-name&gt;br.com.caelum.vraptor.provider&lt;/param-name&gt;
	    &lt;param-value&gt;br.com.caelum.vraptor.util.hibernate.HibernateCustomProvider&lt;/param-value&gt;
	&lt;/context-param&gt;

por favor se puderem dar um help, agradeço desde já…

Att,

Marcelo

se vc não quiser usar o applicationContext.xml você NÃO pode usar o HibernateDaoSupport.

mas você pode tentar fazer uma última coisa:

public class GenericDaoImpl<T> extends HibernateDaoSupport implements
		IGenericDao<T>{

	private static final Log log = LogFactory.getLog(GenericDaoImpl.class);
	
	private Class<T> clazz;	
	
	/**
	 * @param clazz
	 */
	public GenericDaoImpl(Class<T> clazz, SessionFactory factory) {
		this.clazz = clazz;
		setSessionFactory(factory);
		setHibernateTemplate(new HibernateTemplate(factory));
	}

    //...
}

E receba a SessionFactory nos seus daos tb…

mas se isso não funcionar, ou vc pára de usar o HibernateDaoSupport, ou cria um applicationContext.xml

Oi marcelomello. Desculpe se eu não conseguir te explicar, mas vou tentar.

Se você usar Spring direto você tem um application-context e você usa o HibernateTemplate. Nesse caso o Spring fica responsável por tudo e ponto final. Assim você usa normalmente sua HibernateTemplate normalmente.

Porém se você deixa para o vraptor fazer todos os controles você não tem o application-context e nem mesmo o HibernateTemplate. Isso porque por mais que o Vraptor use o Spring por baixo dos panos quem manda em tudo é o vraptor. Assim você deve usar apenas o que é do vraptor e esquecer que há um Spring. Até porque o Vraptor pode usar Pico ou qualquer outro backend que vocẽ queira criar.

Nesse caso o scan-packages que eu cito é que no web.xml você deve dizer para o vraptor onde ele deve buscar tuas classes. Na inicialização o vraptor vai nesses pacotes procurar por classes que são candidatas a “serem gerenciadas” pelo vraptor. O scan das classes é recursivo.

<context-param> <param-name>br.com.caelum.vraptor.packages</param-name> <param-value>br.com.tecnopolis.accessus</param-value> </context-param>

Eu duvido que você consiga usar o hibernate template, até porque essa classe é apenas uma wrapper para que o Spring possa controlar coisas da transação e injeção. Como o Vraptor já faz isso, nem mesmo há uma necessidade de usar o hibernate template.

Desculpe se falei algo que o Lucas já falou, pois lí muito correndo os posts.

Abraços

Obrigado a todos pelas respostas.

Consegui fazer funcionar, através da dica do Lucas (lucascs).
Vlw mesmo pessoal, está funcionando redondinho… pelo menos o save e o listar que criei aqui.
Vou postar as classes assim que terminar.

Mais uma vez obrigado a todos.

Marcelo