VRaptor 3 + Spring + Hibernate

34 respostas
K

Bom dia pessoal, estou estudando um pouco vraptor e já me deparei com um probleminha. Estou seguindo a apostila da caelum FJ-28, gostaria que pudessem me dar uma mão, ao tentar acessar minha lista de produtos cadastrados, é levantado este erro no console:

br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.NullPointerException

br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)

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

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

br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)

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

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

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

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

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

root cause

java.lang.NullPointerException

br.com.caelum.vraptor.DAO.ProdutoDAO.listaTudo(ProdutoDAO.java:51)

br.com.caelum.vraptor.controller.ProdutosController.lista(ProdutosController.java:25)

sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:597)

br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)

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

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

br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:69)

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

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

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

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

br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

segue abaixo minhas classes DAO e controller:

@Resource
public class ProdutosController {

	private ProdutoDAO dao;
	private Result result;
	
	public ProdutosController(ProdutoDAO dao, Result result) {
		this.dao = dao;
		this.result = result;
	}

	/*Utilizado para recuperar uma lista de objetos produto
	 * @param
	 */	
	public List<Produto> lista() {
		return dao.listaTudo();
	}
@Component
public class ProdutoDAO {
	
	private Session session;
	
	// Utilizado para criação da sessão.
	public ProdutoDAO(){
		SessionFactory factory = new CriadorDeSessionFactory().getInstance();
		this.session = new CriadorDeSession(factory).getInstance();
	}
                public List<Produto> listaTudo(){
		List<Produto> lista = this.session.createCriteria(Produto.class).list(); 
		return lista;
	}
}

Estes problemas começaram a aparecer depois que coloquei as anotattions na classe CriadorDeSessionFactory:

@Component
@ApplicationScoped
public class CriadorDeSessionFactory implements ComponentFactory<SessionFactory>{
	
	private SessionFactory factory;
	
	@PostConstruct
	public void abre(){
		AnnotationConfiguration configuration = new AnnotationConfiguration();
		configuration.configure();
		this.factory = configuration.buildSessionFactory();
		System.out.println("foi aberta a fabrica de sessoes");
	}
	
	public SessionFactory getInstance() {
		return this.factory;
	}
	
	@PreDestroy
	public void fecha(){
		this.factory.close();
		System.out.println("foi aberta a fabrica de sessoes");
	}
	
	
}

34 Respostas

lucas.allan

O seu ProdutoDAO está nulo, por algum motivo o VRaptor3 não está injetando ele no controller (provavelmente por causa do CriadorDeSessionFactory). Eu sugiro você utilizar o VRaptor3 para injetar o SessionFactory, ao invés de fazer manualmente.

C

Lucas, estou com o mesmo problema do KamuiEx , mas ali na Controller já não está da forma correta? Como ficaria a injeção de depência do “CriadorDeSession” ?

K

Pelo modelo que eu estou seguindo na apostila da caelum, ela passa pra ser feita esta injeção da DAO no controller, desta forma. Antes de colocar estas anotattion para definir o ciclo de vida da criação da session, não havia este problema, agora, depois que eu coloquei desta forma pra entender melhor o que a apostila tah passando, tah dando este problema, num estou conseguindo entender esse problema, pq naum estou nem conseguindo debugar pra entender melhor…
Obrigado pela ajuda.

lucas.allan

Cristiano, não é injetar o CriadorDeSessionFactory. No caso, esse CriadorDeSessionFactory não iria existir e o que seria injetado era a SessionFactory do Hibernate. Se não me engano, no site do VRaptor3 tem falando sobre isso.
http://vraptor.caelum.com.br/cookbook/interceptando-recursos-anotados/

Lucas_Cavalcanti

no ProdutoDao, vc deveria receber a Session no construtor…

o CriadorDeSession e o CriadorDeSessionFactory são ComponentFactory’s, ou seja, o VRaptor vai usá-los sempre que precisar injetar em alguém Session ou SessionFactory

K

Como eu poderia alterar meu código, para que eu ja recebesse esta session criada no meu construtor. No codigo atual, esta session esta sendo criada dentro do contrutor, ela não esta sendo injetada, me corrija se estiver certo, comparei o código com o da apostila e esta igual, só se a caelum passou um código errado. Obrigado.

Lucas_Cavalcanti

a idéia da apostila é evoluir o código pra vc tirar a criação da sessão de dentro do construtor…

o construtor do produtoDao deveria ser:

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

lucas.allan:
Cristiano, não é injetar o CriadorDeSessionFactory. No caso, esse CriadorDeSessionFactory não iria existir e o que seria injetado era a SessionFactory do Hibernate. Se não me engano, no site do VRaptor3 tem falando sobre isso.
http://vraptor.caelum.com.br/cookbook/interceptando-recursos-anotados/

Muito interessante, valeu pela dica e vou tentar implementar, se der certo posto o resultado :slight_smile:

C

Lucas Cavalcanti:
a idéia da apostila é evoluir o código pra vc tirar a criação da sessão de dentro do construtor…

o construtor do produtoDao deveria ser:

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


Na action da DAO então eu faria algo como:

public void salvar(Cliente cliente){ Session session = session.getInstance() //aqui não me lembro se foi assim que fiz, mas é allgo parecido com isso Transaction tx = beginTransactio(); session.save(cliente); tx.commit(); }
Ou bastaria passar o session somente no construtor da classe e nada mais? Onde a DAO ficaria somente assim:

public void salvar(Cliente cliente){ Transaction tx = beginTransactio(); session.save(cliente); tx.commit(); }

Lucas_Cavalcanti

basta passar somente a session

C

Vou testar sua dica também, e a do seu chará também, obrigado :smiley:

K

Se estou entendendo bem, qnd eu chamo minha classe DAO, eu tenho que passar uma session então no construtor dela, assim, estou meio novo nessa pratica, mais tah fugindo um pouco da ideia do que está sendo passada de lógica no curso do vraptor, pq de acordo com o código, dentro da classe controller eu vou ter que gerar uma instancia de uma session para passar pra minha DAO, a idéia que foi passada na apostila de treinamento era justamente o inverso. Me corrija se estiver errado. Pessoal obrigado pela atenção…

Lucas_Cavalcanti

a idéia é que vc vai receber, também, o ProdutoDao no construtor do ProdutoController… assim o VRaptor se preocupa em instanciar o ProdutoDao.

ou seja, não vai ser vc que vai ter que gerar uma instância da session, vai ser o VRaptor

C

Seguindo o tutorial do Tomaz Lavieri como ficaria minha DAO, eu teria que fazer algo para abrir a conexão com o banco de dados ou como seria?

Lucas_Cavalcanti

a Session do hibernate já abre conexão com o BD…

vc pode receber a session no construtor do ProdutoDao:

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

dê uma olhada na apostila do vraptor:
http://www.caelum.com.br/curso/fj-28-vraptor-hibernate-ajax/

C

Dúvida: Estou seguindo essas dicas http://vraptor.caelum.com.br/cookbook/interceptando-recursos-anotados/ e não vi usar a tag @Transactional nos métodos que são de pesquisa, só vi usando nos métodos de insert e update, no caso dos métodos de consulta a sessão também será fechada ou vai continuar aberta?

Lucas_Cavalcanti

o transactional é só pra transações… as sessões são abertas (e fechadas) toda a requisição

C

Ok, agora entendi, então lá no construtor do meu Controller como tenho meu DAO declarado, quando eu fazer uma requisição de consulta por exemplo ele vai abrir a conexão, processar a requisição, fechar a conexão e devolver o resultado pro controller e certo?

Lucas_Cavalcanti

mais ou menos…
a ordem é essa:

começa a requisição
abre a sessão
começa uma transação (se anotado)

executa o controller (e consultas ou alterações no banco)

comita a transação (se anotado)
fecha a sessão
termina a requisição

C

Lucas acho que estou fazendo errado mas vamos lá, minhas classes estão assim:

AbreSession:
@Component
public class AbreSession implements ComponentFactory<Session> {
    private SessionFactory factory;

    public AbreSession(SessionFactory factory) {
        this.factory = factory;
    }

    public Session getInstance() {
        Session session = factory.openSession();
        return session;
    }
}
AbreSessionFactory:
@Component
public class AbreSessionFactory implements ComponentFactory<SessionFactory> {

    public SessionFactory getInstance() {
        AnnotationConfiguration configuration = new AnnotationConfiguration();
        configuration.configure();
        SessionFactory factory = configuration.buildSessionFactory();
        return factory;
    }
}
Transactional:
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface Transactional {
    
}
TrasactionInteceptor:
@Intercepts
public class TransactionInterceptor implements Interceptor {
        //private final Session session;
       //Na dica que estou seguindo a linha acima estava descomentada mas a IDE acusava que a variável não tava inicializada, daí criei as duas linhas abaixo
       //As duas linhas abaixo não sei se precisam mas tive que colocá-las pra conseguir rodar o projeto
        SessionFactory factory = new AbreSessionFactory().getInstance();
        Session session = new AbreSession(factory).getInstance();
        public HibernateTransactionInterceptor(Session session) {
            this.session = session;
        }
        
        public void intercept(InterceptorStack stack, ResourceMethod method,
                                Object instance) {
            Transaction transaction = null;
            try {
                transaction = session.beginTransaction();
                stack.next(method, instance);
                transaction.commit();
            } finally {
                System.out.println("Inteceptou");
                if (transaction.isActive()) {
                    transaction.rollback();
                }
            }
        }
        public boolean accepts(ResourceMethod method) {
            return  method
                .getMethod() //metodo anotado
                .isAnnotationPresent(Transactional.class)
            || method
                .getResource() //ou recurso anotado
                .getType()
                .isAnnotationPresent(Transactional.class);
            //return true; //aceita todas as requisições
        }
}
ClienteController:
@Resource
public class ClienteController {

    //ClienteDao dao = new ClienteDao();
    private final ClienteDao dao;
    private final Result result;
    private final Validator validator;
    private final Carrinho carrinho;
    private final ProdutoDao daoproduto;
    private final UsuarioDao daousuario;
    private final UsuarioWeb usuarioWeb;
    private final OrcamentoDao orcamentodao;
    private HttpSession sess;
    private Session session;

    public ClienteController(ClienteDao dao, Carrinho carrinho, Result result, Validator validator, UsuarioDao daousuario, UsuarioWeb usuarioWeb, ProdutoDao daoproduto, OrcamentoDao orcamentodao, HttpSession sess, Session session) {
        this.dao = dao;
        this.carrinho = carrinho;
        this.daousuario = daousuario;
        this.usuarioWeb = usuarioWeb;
        this.daoproduto = daoproduto;
        this.result = result;
        this.validator = validator;
        this.orcamentodao = orcamentodao;
        this.sess = sess;
        this.session = session;
    }
    public List<Produto> Tela_Acessorios_Acabamento5() {
        //System.out.println("Acessorios acabamentos: " + usuarioWeb.getLogado().getLogin());
        return daoproduto.listaAcabamentos();

    }
    public void index2(){
    
    }
}
ProdutoDao:
@Component
public class ProdutoDao {
	//Session session = new AbreSession().getSession();
        SessionFactory factory = new AbreSessionFactory().getInstance();
        Session session = new AbreSession(factory).getInstance();

        public ProdutoDao(Session session){
            this.session = session;
        }
        public List<Produto> listaAcabamentos(){
		//return this.session.createCriteria(Produto.class).add( Expression.eq("cod_produto", 12) ).list();
                return this.session.createCriteria(Produto.class).add( Expression.in("cod_produto", new Integer[] {12,15})).list();
		//return this.session.createCriteria(Produto.class).list();
	}
}
Observe como estão as conexões antes de acessar a página principal: [url]http://img143.imageshack.us/img143/9682/mysql.jpg[/url] Quando acesso a URL: [url]http://localhost:8080/BMWEB/cliente/index2[/url] O V-Raptor fez isso:
00:59:19,117 DEBUG [VRaptor             ] VRaptor received a new request
00:59:19,123 DEBUG [DefaultRequestExecution] executing stack  DefaultRequestExecution
00:59:19,133 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
00:59:19,134 DEBUG [DefaultResourceTranslator] trying to access /cliente/index2
00:59:19,134 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: ClienteController.index2ClienteController.index2()]
00:59:19,141 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor
00:59:19,143 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InterceptorListPriorToExecutionExtractor
00:59:19,688 DEBUG [InstantiatedInterceptorHandler] Invoking interceptor PermissaoInterceptor
00:59:19,688 DEBUG [InstantiatedInterceptorHandler] Invoking interceptor InstantiateInterceptor
00:59:21,144 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor
00:59:21,145 DEBUG [JstlLocalization    ] couldn't find message bundle, creating an empty one
00:59:21,145 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ClienteController.index2() as []
00:59:21,145 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: ClienteController.index2ClienteController.index2()] are []
00:59:21,160 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
00:59:21,237 DEBUG [ExecuteMethodInterceptor] Invoking ClienteController.index2()
00:59:21,242 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor OutjectResult
00:59:21,249 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor
00:59:21,249 DEBUG [ForwardToDefaultViewInterceptor] forwarding to the dafault page for this logic
00:59:21,256 DEBUG [DefaultPageResult   ] forwarding to /WEB-INF/jsp/cliente/index2.jsp
00:59:21,258 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/WEB-INF/jsp/cliente/index2.jsp 
00:59:21,310 DEBUG [VRaptor             ] VRaptor ended the request
00:59:21,401 DEBUG [VRaptor             ] VRaptor received a new request
00:59:21,409 DEBUG [DefaultRequestExecution] executing stack  DefaultRequestExecution
00:59:21,418 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
00:59:21,418 DEBUG [DefaultResourceTranslator] trying to access /cliente/Scripts/AC_RunActiveContent.js
00:59:21,419 DEBUG [VRaptor             ] VRaptor ended the request
00:59:21,448 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/MENU01.jpg 
00:59:21,453 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/Semtitulo.jpg 
00:59:21,456 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/1273933418_Home_Black.png 
00:59:21,458 DEBUG [VRaptor             ] VRaptor received a new request
00:59:21,460 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/MeusOrcamentos.jpg 
00:59:21,464 DEBUG [DefaultRequestExecution] executing stack  DefaultRequestExecution
00:59:21,494 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/Menu02.jpg 
00:59:21,494 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/Meus_Dados.jpg 
00:59:21,485 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/acessorestrito.png 
00:59:21,480 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/Lupinha.jpg 
00:59:21,558 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/OndeEstamos.jpg 
00:59:21,561 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/carrinho.gif 
00:59:21,562 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/Contato.jpg 
00:59:21,464 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/MinhasCompras.jpg 
00:59:21,566 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/Imagens/Semtitulo2.jpg 
00:59:21,567 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
00:59:21,660 DEBUG [DefaultResourceTranslator] trying to access /cliente/Tela_Bunese
00:59:21,661 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: ClienteController.Tela_BuneseClienteController.Tela_Bunese()]
00:59:21,669 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor
00:59:21,672 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InterceptorListPriorToExecutionExtractor
00:59:22,026 DEBUG [InstantiatedInterceptorHandler] Invoking interceptor PermissaoInterceptor
00:59:22,026 DEBUG [InstantiatedInterceptorHandler] Invoking interceptor InstantiateInterceptor
00:59:23,483 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor
00:59:23,483 DEBUG [JstlLocalization    ] couldn't find message bundle, creating an empty one
00:59:23,483 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ClienteController.Tela_Bunese() as []
00:59:23,483 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: ClienteController.Tela_BuneseClienteController.Tela_Bunese()] are []
00:59:23,497 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor
00:59:23,534 DEBUG [ExecuteMethodInterceptor] Invoking ClienteController.Tela_Bunese()
00:59:23,538 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor OutjectResult
00:59:23,544 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor
00:59:23,544 DEBUG [ForwardToDefaultViewInterceptor] forwarding to the dafault page for this logic
00:59:23,550 DEBUG [DefaultPageResult   ] forwarding to /WEB-INF/jsp/cliente/Tela_Bunese.jsp
00:59:23,551 DEBUG [DefaultStaticContentHandler] Deferring request to container: /BMWEB/WEB-INF/jsp/cliente/Tela_Bunese.jsp 
00:59:23,553 DEBUG [VRaptor             ] VRaptor ended the request
00:59:23,557 DEBUG [VRaptor             ] VRaptor received a new request
00:59:23,648 DEBUG [DefaultRequestExecution] executing stack  DefaultRequestExecution
00:59:23,661 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
00:59:23,661 DEBUG [DefaultResourceTranslator] trying to access /cliente/Scripts/AC_RunActiveContent.js
00:59:23,661 DEBUG [VRaptor             ] VRaptor ended the request
00:59:23,732 DEBUG [VRaptor             ] VRaptor received a new request
00:59:23,740 DEBUG [DefaultRequestExecution] executing stack  DefaultRequestExecution
00:59:23,755 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor
00:59:23,756 DEBUG [DefaultResourceTranslator] trying to access /TEMPLATES/0359/Template.Monster.0359/html/images/m2.jpg
00:59:23,757 DEBUG [VRaptor             ] VRaptor ended the request
Veja como o número de conexões aumentou: [url]http://img707.imageshack.us/img707/5417/msql2.jpg[/url] Observe na minha classe ClienteController no construtor dela a quantidade de DAO's que recebo, cada DAO que está no construtor ele abre uma nova conexão a qual nunca é fechada. Como eu poderia contornar isso? Até o momento a classe TransactionInterceptor não fecha conexão em momento algum, eu não teria que em algum ponto dela mandar fechar conexão e daí na minha DAO nos trechos onde são executados as consultas eu anotar com @Transactional??
Lucas_Cavalcanti

as sessions não vão se fechar sozinhas, o VRaptor não faz isso por vc automaticamente… achei que vc estava usando o componente do VRaptor pra isso
(http://vraptor.caelum.com.br/documentacao/componentes-utilitarios-opcionais/)

as suas classes AbreSession e AbreSessionFactory deveriam ser iguais às SessionCreator e SessionFactoryCreator desse pacote:
https://github.com/caelum/vraptor/tree/master/vraptor-core/src/main/java/br/com/caelum/vraptor/util/hibernate

assim as sessões serão fechadas no final da requisição

C

Não conhecia os componentes adicionais do V-Raptor, value pela dica :). Usando este componente as chamadas na minha DAO ficariam de forma similar ao que tenho hoje correto?

Lucas_Cavalcanti

sim, só receber session no construtor

C
Bom tô tentando implementar, mas ao acessar a minha página principal ocorre o seguinte erro:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'hibernateTransactionInterceptor' defined in file [D:\TCC\vraptor-blank-project-3.1.1\build\web\WEB-INF\classes\br\bmweb\interceptor\HibernateTransactionInterceptor.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : Error creating bean with name 'br.bmweb.util.AbreSession': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'abreSession' defined in file [D:\TCC\vraptor-blank-project-3.1.1\build\web\WEB-INF\classes\br\bmweb\util\AbreSession.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [br.bmweb.util.AbreSession]: Constructor threw exception; nested exception is java.lang.RuntimeException: Uncompilable source code - variable factory might not have been initialized; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'br.bmweb.util.AbreSession': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'abreSession' defined in file [D:\TCC\vraptor-blank-project-3.1.1\build\web\WEB-INF\classes\br\bmweb\util\AbreSession.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [br.bmweb.util.AbreSession]: Constructor threw exception; nested exception is java.lang.RuntimeException: Uncompilable source code - variable factory might not have been initialized
	org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:698)
	org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
	org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
	br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
	br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:32)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:30)
	com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431)
	java.util.AbstractList$Itr.next(AbstractList.java:345)
	com.google.common.collect.Iterators$7.computeNext(Iterators.java:602)
	com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
	com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
	com.google.common.collect.Lists.newArrayList(Lists.java:131)
	com.google.common.collect.Collections2$FilteredCollection.toArray(Collections2.java:219)
	br.com.caelum.vraptor.interceptor.DefaultInterceptorRegistry.interceptorsFor(DefaultInterceptorRegistry.java:50)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:42)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'br.bmweb.util.AbreSession': FactoryBean threw exception on object creation; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'abreSession' defined in file [D:\TCC\vraptor-blank-project-3.1.1\build\web\WEB-INF\classes\br\bmweb\util\AbreSession.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [br.bmweb.util.AbreSession]: Constructor threw exception; nested exception is java.lang.RuntimeException: Uncompilable source code - variable factory might not have been initialized
	org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:150)
	org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109)
	org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1387)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:244)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:820)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:762)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:680)
	org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:771)
	org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:691)
	org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
	org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
	br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
	br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:32)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:30)
	com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431)
	java.util.AbstractList$Itr.next(AbstractList.java:345)
	com.google.common.collect.Iterators$7.computeNext(Iterators.java:602)
	com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
	com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
	com.google.common.collect.Lists.newArrayList(Lists.java:131)
	com.google.common.collect.Collections2$FilteredCollection.toArray(Collections2.java:219)
	br.com.caelum.vraptor.interceptor.DefaultInterceptorRegistry.interceptorsFor(DefaultInterceptorRegistry.java:50)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:42)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
root cause

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'abreSession' defined in file [D:\TCC\vraptor-blank-project-3.1.1\build\web\WEB-INF\classes\br\bmweb\util\AbreSession.class]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [br.bmweb.util.AbreSession]: Constructor threw exception; nested exception is java.lang.RuntimeException: Uncompilable source code - variable factory might not have been initialized
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:946)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:890)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
	org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
	br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
	br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
	br.com.caelum.vraptor.ioc.spring.ComponentFactoryBean.getObject(ComponentFactoryBean.java:42)
	org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:143)
	org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109)
	org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1387)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:244)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:820)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:762)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:680)
	org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:771)
	org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:691)
	org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
	org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
	br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
	br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:32)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:30)
	com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431)
	java.util.AbstractList$Itr.next(AbstractList.java:345)
	com.google.common.collect.Iterators$7.computeNext(Iterators.java:602)
	com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
	com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
	com.google.common.collect.Lists.newArrayList(Lists.java:131)
	com.google.common.collect.Collections2$FilteredCollection.toArray(Collections2.java:219)
	br.com.caelum.vraptor.interceptor.DefaultInterceptorRegistry.interceptorsFor(DefaultInterceptorRegistry.java:50)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:42)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
root cause

org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [br.bmweb.util.AbreSession]: Constructor threw exception; nested exception is java.lang.RuntimeException: Uncompilable source code - variable factory might not have been initialized
	org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:141)
	org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:72)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:938)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:890)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
	org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
	br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
	br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
	br.com.caelum.vraptor.ioc.spring.ComponentFactoryBean.getObject(ComponentFactoryBean.java:42)
	org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:143)
	org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109)
	org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1387)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:244)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:820)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:762)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:680)
	org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:771)
	org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:691)
	org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
	org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
	br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
	br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:32)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:30)
	com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431)
	java.util.AbstractList$Itr.next(AbstractList.java:345)
	com.google.common.collect.Iterators$7.computeNext(Iterators.java:602)
	com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
	com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
	com.google.common.collect.Lists.newArrayList(Lists.java:131)
	com.google.common.collect.Collections2$FilteredCollection.toArray(Collections2.java:219)
	br.com.caelum.vraptor.interceptor.DefaultInterceptorRegistry.interceptorsFor(DefaultInterceptorRegistry.java:50)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:42)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
root cause

java.lang.RuntimeException: Uncompilable source code - variable factory might not have been initialized
	br.bmweb.util.AbreSession.<init>(AbreSession.java:36)
	sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
	sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
	java.lang.reflect.Constructor.newInstance(Constructor.java:513)
	org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:126)
	org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:72)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateBean(AbstractAutowireCapableBeanFactory.java:938)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:890)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
	org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
	br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
	br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
	br.com.caelum.vraptor.ioc.spring.ComponentFactoryBean.getObject(ComponentFactoryBean.java:42)
	org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:143)
	org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:109)
	org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1387)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:244)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:820)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:762)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:680)
	org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:771)
	org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:691)
	org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
	org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
	br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
	br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:32)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:30)
	com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431)
	java.util.AbstractList$Itr.next(AbstractList.java:345)
	com.google.common.collect.Iterators$7.computeNext(Iterators.java:602)
	com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
	com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
	com.google.common.collect.Lists.newArrayList(Lists.java:131)
	com.google.common.collect.Collections2$FilteredCollection.toArray(Collections2.java:219)
	br.com.caelum.vraptor.interceptor.DefaultInterceptorRegistry.interceptorsFor(DefaultInterceptorRegistry.java:50)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:42)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
As classes estão assim: AbreSession:
package br.bmweb.util;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;
import br.com.caelum.vraptor.ioc.RequestScoped;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

/*public class AbreSession {
public static Session getSession() {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.configure();
SessionFactory factory = configuration.buildSessionFactory();
Session session = factory.openSession();
return session;
}
}*/
/*@Component
public class AbreSession implements ComponentFactory<Session> {
private SessionFactory factory;

public AbreSession(SessionFactory factory) {
this.factory = factory;
}

public Session getInstance() {
Session session = factory.openSession();
return session;
}
}*/
@Component
@RequestScoped
public class AbreSession implements ComponentFactory<Session> {

    private final SessionFactory factory;
    private Session session;

    public SessionCreator(SessionFactory factory) {
        this.factory = factory;
    }

    @PostConstruct
    public void create() {
        System.out.println("Abriu conexão");
        this.session = factory.openSession();
    }

    public Session getInstance() {
        return session;
    }

    @PreDestroy
    public void destroy() {
        System.out.println("Fechou conexão");
        this.session.close();
    }
}
AbreSessionFactory:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.bmweb.util;

import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

/**
 *
 * @author cristiano
 */
/*@Component
public class AbreSessionFactory implements ComponentFactory<SessionFactory> {

public SessionFactory getInstance() {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.configure();
SessionFactory factory = configuration.buildSessionFactory();
return factory;
}
}*/
@Component
@ApplicationScoped
public class AbreSessionFactory implements ComponentFactory<SessionFactory> {

    private SessionFactory factory;

    @PostConstruct
    public void create() {
        factory = new AnnotationConfiguration().configure().buildSessionFactory();
        System.out.println("Factory Abriu conexão");
    }

    public SessionFactory getInstance() {
        return factory;
    }

    @PreDestroy
    public void destroy() {
        factory.close();
        System.out.println("Factory Fechou conexão");
    }
}
HibernateCustomProvider:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.bmweb.provider;

import br.bmweb.interceptor.HibernateTransactionInterceptor;
import br.bmweb.util.AbreSession;
import br.bmweb.util.AbreSessionFactory;
import br.com.caelum.vraptor.ComponentRegistry;
import br.com.caelum.vraptor.ioc.spring.SpringProvider;

/**
 *
 * @author cristiano
 */
public class HibernateCustomProvider extends SpringProvider {

    @Override
    protected void registerCustomComponents(ComponentRegistry registry) {
        registry.register(AbreSession.class, AbreSession.class);
        registry.register(AbreSessionFactory.class, AbreSessionFactory.class);
        registry.register(HibernateTransactionInterceptor.class, HibernateTransactionInterceptor.class);
        System.out.println("Registrou classes");
    }
}
HibernateTransactionalInterceptor:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.bmweb.interceptor;

import br.com.caelum.vraptor.Intercepts;
import br.com.caelum.vraptor.core.InterceptorStack;
import br.com.caelum.vraptor.interceptor.Interceptor;
import br.com.caelum.vraptor.resource.ResourceMethod;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author cristiano
 */
@Intercepts
public class HibernateTransactionInterceptor implements Interceptor {

    private final Session session;

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

    public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) {
        Transaction transaction = null;
        try {
            transaction = session.beginTransaction();
            stack.next(method, instance);
            transaction.commit();
        } finally {
            if (transaction != null && transaction.isActive()) {
                transaction.rollback();
            }
        }
    }

    public boolean accepts(ResourceMethod method) {
        return true; // Will intercept all requests
    }
}

Na minha classe AbreSession como eu deveria ter inicializado a variável factory?

Lucas_Cavalcanti

br.bmweb.util.AbreSession]: Constructor threw exception; nested exception is java.lang.RuntimeException: Uncompilable source code - variable factory might not have been initialized

tá dando um erro de compilação estranho…

se vc vai usar essas classes do jeito que elas estão, é melhor usar as já prontas do VRaptor

tire todas as anotações @Component das AbreXXX e do interceptor, e não use o seu HibernateCustomProvider…

ao invés disso coloque 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 tire a configuração de provider se vc tiver alguma

C
Removi tudo relacionado ao custom provider, e tirei todas as anotações @Component das AbreXXX e do interceptor e alterei o web.xml e ocorreu o erro:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'hibernateTransactionInterceptor' defined in file [D:\TCC\vraptor-blank-project-3.1.1\build\web\WEB-INF\classes\br\bmweb\interceptor\HibernateTransactionInterceptor.class]: Unsatisfied dependency expressed through constructor argument with index 0 of type [org.hibernate.Session]: : No matching bean of type [org.hibernate.Session] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.hibernate.Session] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
	org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:698)
	org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
	org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
	br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
	br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:32)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:30)
	com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431)
	java.util.AbstractList$Itr.next(AbstractList.java:345)
	com.google.common.collect.Iterators$7.computeNext(Iterators.java:602)
	com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
	com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
	com.google.common.collect.Lists.newArrayList(Lists.java:131)
	com.google.common.collect.Collections2$FilteredCollection.toArray(Collections2.java:219)
	br.com.caelum.vraptor.interceptor.DefaultInterceptorRegistry.interceptorsFor(DefaultInterceptorRegistry.java:50)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:42)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
root cause

org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.hibernate.Session] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
	org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:896)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:765)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:680)
	org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:771)
	org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:691)
	org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:192)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:984)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:886)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:479)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
	org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:328)
	org.springframework.web.context.request.AbstractRequestAttributesScope.get(AbstractRequestAttributesScope.java:43)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:385)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:375)
	org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1069)
	org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:221)
	br.com.caelum.vraptor.ioc.spring.VRaptorApplicationContext.getBean(VRaptorApplicationContext.java:244)
	br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.instanceFor(SpringBasedContainer.java:59)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:32)
	br.com.caelum.vraptor.util.collections.Functions$1.apply(Functions.java:30)
	com.google.common.collect.Lists$TransformingRandomAccessList.get(Lists.java:431)
	java.util.AbstractList$Itr.next(AbstractList.java:345)
	com.google.common.collect.Iterators$7.computeNext(Iterators.java:602)
	com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:135)
	com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:130)
	com.google.common.collect.Lists.newArrayList(Lists.java:131)
	com.google.common.collect.Collections2$FilteredCollection.toArray(Collections2.java:219)
	br.com.caelum.vraptor.interceptor.DefaultInterceptorRegistry.interceptorsFor(DefaultInterceptorRegistry.java:50)
	br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:42)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
Parece que ele não tá achando/interpretando o Session que tá na classe HibernateTransactionInterceptor.
Lucas_Cavalcanti

vc colocou isso no 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>
C

Sim, está assim:

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> <display-name>BMWEB</display-name> <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> import br.com.caelum.vraptor.util.hibernate </param-value> </context-param> </web-app>

C

Pro V-Raptor fazer o import dessas classes ele deveria mostrar algo como isso?

12:49:38,191 INFO [VRaptorApplicationContext] Scanning packages from WEB-INF/classes and jars: [import br.com.caelum.vraptor.util.hibernate] 12:49:38,191 DEBUG [ComponentScanner ] scanning [import br.com.caelum.vraptor.util.hibernate]

Lucas_Cavalcanti

tira a palavra import…

C
Tirei e deu o mesmo erro, minha classe HibernateTransactionInterceptor está assim:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.bmweb.interceptor;

import br.com.caelum.vraptor.Intercepts;
import br.com.caelum.vraptor.core.InterceptorStack;
import br.com.caelum.vraptor.interceptor.Interceptor;
import br.com.caelum.vraptor.resource.ResourceMethod;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
 *
 * @author cristiano
 */
@Intercepts
public class HibernateTransactionInterceptor implements Interceptor {

    private final Session session;

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

    public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) {
        Transaction transaction = null;
        try {
            transaction = session.beginTransaction();
            stack.next(method, instance);
            transaction.commit();
        } finally {
            if (transaction != null && transaction.isActive()) {
                transaction.rollback();
            }
        }
    }

    public boolean accepts(ResourceMethod method) {
        return true; // Will intercept all requests
    }
}
Pelo erro:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [org.hibernate.Session] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {}
Este erro ele não tá implicando com o meu import da classe? A URL que chamo é essa: [url]http://localhost:8080/BMWEB/cliente/index2[/url] Onde o controller tá assim:
package br.bmweb.controller;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;

import br.bmweb.bean.Carrinho;
import br.bmweb.bean.Cliente;
import br.bmweb.bean.Funcionario;
import br.bmweb.bean.Item;
import br.bmweb.bean.ItemOrcamento;
import br.bmweb.bean.Orcamento;
import br.bmweb.bean.Produto;
import br.bmweb.bean.Usuario;
import br.bmweb.bean.UsuarioWeb;
import br.bmweb.bean.Venda;
import br.bmweb.dao.ClienteDao;
import br.bmweb.dao.OrcamentoDao;
import br.bmweb.dao.ProdutoDao;
import br.bmweb.dao.UsuarioDao;
import br.bmweb.interceptor.Permissao;
import br.bmweb.interfaces.Transactional;
import br.bmweb.model.common.TipoPerfil;
import br.bmweb.util.AbreSession;
import br.bmweb.util.Data;
import br.bmweb.util.Spam;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.validator.ValidationMessage;
import br.com.caelum.vraptor.view.Results;
import javax.servlet.http.HttpSession;

@Resource
public class ClienteController {

    //ClienteDao dao = new ClienteDao();
    private final ClienteDao dao;
    private final Result result;
    private final Validator validator;
    private final Carrinho carrinho;
    private final ProdutoDao daoproduto;
    private final UsuarioDao daousuario;
    private final UsuarioWeb usuarioWeb;
    private final OrcamentoDao orcamentodao;
    private HttpSession sess;
    private Session session;

    public ClienteController(ClienteDao dao, Carrinho carrinho, Result result, Validator validator, UsuarioDao daousuario, UsuarioWeb usuarioWeb, ProdutoDao daoproduto, OrcamentoDao orcamentodao, HttpSession sess, Session session) {
        this.dao = dao;
        this.carrinho = carrinho;
        this.daousuario = daousuario;
        this.usuarioWeb = usuarioWeb;
        this.daoproduto = daoproduto;
        this.result = result;
        this.validator = validator;
        this.orcamentodao = orcamentodao;
        this.sess = sess;
        this.session = session;
    }

    public void index2() {
    }
O trecho inicial da ClienteDao tá assim:
package br.bmweb.dao;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.FetchMode;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Projection;
import org.hibernate.criterion.ProjectionList;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.hibernate.criterion.SimpleExpression;

import br.bmweb.bean.Cliente;
import br.bmweb.bean.ItemOrcamento;
import br.bmweb.bean.Orcamento;
import br.bmweb.bean.Usuario;
import br.bmweb.bean.Venda;
import br.bmweb.util.AbreSession;
import br.bmweb.util.AbreSessionFactory;
import br.com.caelum.vraptor.ioc.Component;
import org.hibernate.SessionFactory;

@Component
public class ClienteDao {
    //private Session session;
    //SessionFactory factory = new AbreSessionFactory().getInstance();
    //Session session = new AbreSession(factory).getInstance();
    Session session;
    public ClienteDao(Session session){
        this.session = session;

    }
Tá faltando algo? Preciso ter um applicationContext.xml ??
C
Esqueci de colocar mas aí vão as classes de conexão:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.bmweb.util;

import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

/**
 *
 * @author cristiano
 */
/*@Component
public class AbreSessionFactory implements ComponentFactory<SessionFactory> {

public SessionFactory getInstance() {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.configure();
SessionFactory factory = configuration.buildSessionFactory();
return factory;
}
}*/
//@Component
@ApplicationScoped
public class AbreSessionFactory implements ComponentFactory<SessionFactory> {

    private SessionFactory factory;

    @PostConstruct
    public void create() {
        factory = new AnnotationConfiguration().configure().buildSessionFactory();
        System.out.println("Factory Abriu conexão");
    }

    public SessionFactory getInstance() {
        return factory;
    }

    @PreDestroy
    public void destroy() {
        factory.close();
        System.out.println("Factory Fechou conexão");
    }
}
package br.bmweb.util;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;
import br.com.caelum.vraptor.ioc.RequestScoped;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

/*public class AbreSession {
public static Session getSession() {
AnnotationConfiguration configuration = new AnnotationConfiguration();
configuration.configure();
SessionFactory factory = configuration.buildSessionFactory();
Session session = factory.openSession();
return session;
}
}*/
/*@Component
public class AbreSession implements ComponentFactory<Session> {
private SessionFactory factory;

public AbreSession(SessionFactory factory) {
this.factory = factory;
}

public Session getInstance() {
Session session = factory.openSession();
return session;
}
}*/
//@Component
@RequestScoped
public class AbreSession implements ComponentFactory<Session> {

    private final SessionFactory factory;
    private Session session;

    public SessionCreator(SessionFactory factory) {
        this.factory = factory;
    }

    @PostConstruct
    public void create() {
        System.out.println("Abriu conexão");
        this.session = factory.openSession();
    }

    public Session getInstance() {
        return session;
    }

    @PreDestroy
    public void destroy() {
        System.out.println("Fechou conexão");
        this.session.close();
    }
}

As notações delas estão corretas?

Lucas_Cavalcanti

as classes estão corretas, aparentemente…

copia exatamente isso pro 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 tire a configuração de packages anterior

Lucas_Cavalcanti

ah, e vc não precisa do transaction interceptor, comente a anotação @Intercepts dele tb

Criado 29 de novembro de 2010
Ultima resposta 10 de dez. de 2010
Respostas 34
Participantes 4