Erro vraptor - ajudem por favor!

8 respostas
brunowc

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 "
"
@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;
    }
}
 "
" Tenho o jsp para fazer o login, só que ao dar ok aparece a seguinte mensagem "
"
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.<init>(DaoFactory.java:26)
	br.com.projeto.loja.DaoInterceptor.<init>(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.
"
"

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

8 Respostas

Cherubini

Cola seu DaoInterceptor,DaoFactory e o HibernateUtil!!

T

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

brunowc

Pessoal, seguem as minhas classes

"
"  * 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();
    }
}
"
" "
" 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<Categoria> getCategoriaDao() {
        return new Dao<Categoria>(this.session, Categoria.class);
    }

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

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

    public Dao<Produto> getProdutoDao() {
        return new Dao<Produto>(this.session, Produto.class);
    }
} "
" "
" 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;

    }
} "
"
T

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

brunowc

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

T

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;
    }
}
brunowc

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 !!

T

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…

Criado 17 de agosto de 2009
Ultima resposta 18 de ago. de 2009
Respostas 8
Participantes 3