Erro vraptor - ajudem por favor!

Ola Pessoal, eu sou novo no mundo Java, e estou utilizando a apostila FJ28 da caelum para aprender mais sobre o vraptor.
Só que esta acontecendo um problema no uso do VRAPTOR. Estou utilzando o Netbeans.

Eu estou fazendo um projeot utilizando o projeto lojavirtual da caelum como modelo
“[code]”
@Component(“admin”)
@InterceptedBy(DaoInterceptor.class)
public class AdminLogic {

private final DaoFactory daoFactory;
private Usuario usuario;

public AdminLogic(DaoFactory daoFactory) {
    this.daoFactory = daoFactory;
}

public void login() {
}

public String efetuaLogin(Usuario usuario) {
    UsuarioDao dao = this.daoFactory.getUsuarioDao();
    this.usuario = dao.existeUnico(usuario);
    if (this.usuario != null) {
        return "ok";
    } else {
        return "invalid";
    }
}

public void logout() {
    this.usuario = null;
}

@Out(scope = ScopeType.SESSION)
public Usuario getUsuario() {
    return usuario;
}

}
“[/code]”
Tenho o jsp para fazer o login, só que ao dar ok aparece a seguinte mensagem

“[code]”
HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Unable to instantiate using public br.com.projeto.loja.DaoInterceptor()
org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:55)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

org.vraptor.interceptor.InterceptorInstantiationException: Unable to instantiate using public br.com.projeto.loja.DaoInterceptor()
org.vraptor.interceptor.InterceptorDealer.poll(InterceptorDealer.java:68)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:58)
org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:47)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:97)
org.vraptor.core.DefaultController.execute(DefaultController.java:46)
org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:44)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

org.vraptor.component.ComponentInstantiationException: Unable to instantiate using public br.com.projeto.loja.DaoInterceptor()
org.vraptor.component.ComponentConstructor.newInstance(ComponentConstructor.java:45)
org.vraptor.interceptor.InterceptorType.newInstance(InterceptorType.java:66)
org.vraptor.interceptor.InterceptorDealer.poll(InterceptorDealer.java:62)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:58)
org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:47)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:97)
org.vraptor.core.DefaultController.execute(DefaultController.java:46)
org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:44)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

java.lang.reflect.InvocationTargetException
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.vraptor.component.ComponentConstructor.newInstance(ComponentConstructor.java:43)
org.vraptor.interceptor.InterceptorType.newInstance(InterceptorType.java:66)
org.vraptor.interceptor.InterceptorDealer.poll(InterceptorDealer.java:62)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:58)
org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:47)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:97)
org.vraptor.core.DefaultController.execute(DefaultController.java:46)
org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:44)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

java.lang.NoClassDefFoundError: Could not initialize class br.com.projeto.util.HibernateUtil
br.com.projeto.modelo.dao.DaoFactory.(DaoFactory.java:26)
br.com.projeto.loja.DaoInterceptor.(DaoInterceptor.java:20)
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.vraptor.component.ComponentConstructor.newInstance(ComponentConstructor.java:43)
org.vraptor.interceptor.InterceptorType.newInstance(InterceptorType.java:66)
org.vraptor.interceptor.InterceptorDealer.poll(InterceptorDealer.java:62)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:58)
org.vraptor.interceptor.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:22)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.interceptor.RegisterAttributesInteceptor.intercept(RegisterAttributesInteceptor.java:47)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:97)
org.vraptor.core.DefaultController.execute(DefaultController.java:46)
org.vraptor.http.DefaultDispatcher.dispatch(DefaultDispatcher.java:44)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
“[/code]”

O QUE EU ESTOU FAZENDO DE ERRADO … ME AJUDEM POR FAVOR !!!

Cola seu DaoInterceptor,DaoFactory e o HibernateUtil!!

e tb edite seu post usando as tags “[ code ]” (Código Java) "[ /code ] " quando for postar código.

Pessoal, seguem as minhas classes

“[code]” * To change this template, choose Tools | Templates

  • and open the template in the editor.
    */
    package br.com.projeto.util;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.cfg.Configuration;

/**
*

  • @author Bruno Wilson
    */
    public class HibernateUtil {

    private static SessionFactory factory;

    static {
    Configuration conf = new AnnotationConfiguration();
    conf.configure();
    factory = conf.buildSessionFactory();
    }

    public static Session getSession() {
    return factory.openSession();
    }
    }
    “[/code]”

“[code]” package br.com.projeto.modelo.dao;

import br.com.projeto.modelo.Categoria;
import br.com.projeto.modelo.Fornecedor;
import br.com.projeto.modelo.Produto;
import br.com.projeto.modelo.Status;
import br.com.projeto.modelo.Usuario;
import br.com.projeto.util.HibernateUtil;
import org.hibernate.Session;
import org.hibernate.Transaction;

/**
*

  • @author Bruno Wilson
    */
    public class DaoFactory {

    private final Session session;
    private Transaction transaction;

    public DaoFactory() {
    session = HibernateUtil.getSession();
    }

    public void beginTransaction() {
    this.transaction = this.session.beginTransaction();
    }

    public void commit() {
    this.transaction.commit();
    this.transaction = null;
    }

    public boolean hasTransaction() {
    return this.transaction != null;
    }

    public void rollback() {
    this.transaction.rollback();
    this.transaction = null;
    }

    public void close() {
    this.session.close();
    }

    public UsuarioDao getUsuarioDao() {
    return new UsuarioDao(this.session);
    }

    public Dao getCategoriaDao() {
    return new Dao(this.session, Categoria.class);
    }

    public Dao getFornecedorDao() {
    return new Dao(this.session, Fornecedor.class);
    }

    public Dao getStatusDao() {
    return new Dao(this.session, Status.class);
    }

    public Dao getProdutoDao() {
    return new Dao(this.session, Produto.class);
    }
    } “[/code]”

“[code]” package br.com.projeto.loja;

import br.com.projeto.modelo.dao.DaoFactory;
import org.vraptor.Interceptor;
import org.vraptor.LogicException;
import org.vraptor.LogicFlow;
import org.vraptor.annotations.Out;
import org.vraptor.view.ViewException;

/**
*

  • @author Bruno Wilson
    */
    public class DaoInterceptor implements Interceptor {

    private final DaoFactory factory = new DaoFactory();

    public void intercept(LogicFlow flow) throws LogicException, ViewException {
    // executa a lógica
    flow.execute();
    // se sobrou transação sem comitar, faz rollback
    if (factory.hasTransaction()) {
    factory.rollback();
    }
    factory.close();
    }

    @Out(key = “br.com.projeto.modelo.dao.DaoFactory”)
    public DaoFactory getFactory() {
    return factory;

    }
    } “[/code]”

eu coloquei [ code] com espaço pra vc entender e para que aparecesse se não ele ia interpretar como código, mas deve colocar sem espaços

Agora sim, Thiago, voce é rapido heim rsrsrs estava editando a mensagem e voce ja respondeu rsrsrs
Mas qual é o real motivo desse erro ?

no seu DaoInterceptor mude para


public class DaoInterceptor implements Interceptor {

    private DaoFactory factory;

    public void intercept(LogicFlow flow) throws LogicException, ViewException {
        
       // adicione essa linha
        this.factory = new DaoFactory();
        
        // executa a logica
        flow.execute();
        // se sobrou transacao sem comitar, faz rollback
        if (factory.hasTransaction()) {
            factory.rollback();
        }
        factory.close();
    }

    @Out(key = "br.com.projeto.modelo.dao.DaoFactory")
    public DaoFactory getFactory() {
        return factory;
    }
}

Thiago, MUITO OBRIGADO !!! Agora funcionou o projeto !!

Queria perguntar uma outra coisa pra voce …
Qual framework que voce aconselha a usar pra fazer as Views de um projeto com Vraptor ?
Que trabalhe bem e seja “de uma linha rapida de aprendizado” como o Vraptor ?

Abração e obrigado denovo !!

Bom, as telas provavelmente vc vai precisar da ajudinha de um designer. não sei vc, mas eu sou péssimo em layout, arrisco uns tr’s e td’s e olhe lá, mas eu uso o Tiles para templates, já q o projeto que trabalho tem partes comuns a todas as telas das aplicações, nao é difícil de usar, e ajuda pra caramba…uso VRaptor, Hibernate, Tiles e JQuery pra Ajax e atendeu minhas necessidades…