Erro com o VRaptor

18 respostas
ma.pops
Alguem conhece esse erro do VRaptor
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.caelum.lojavirtual.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)


root cause 

org.vraptor.interceptor.InterceptorInstantiationException: Unable to instantiate using public br.com.caelum.lojavirtual.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)


root cause 

org.vraptor.component.ComponentInstantiationException: Unable to instantiate using public br.com.caelum.lojavirtual.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)


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)


root cause 

java.lang.IllegalAccessError: tried to access field org.slf4j.impl.StaticLoggerBinder.SINGLETON from class org.slf4j.LoggerFactory
	org.slf4j.LoggerFactory.<clinit>(LoggerFactory.java:60)
	org.hibernate.cfg.Configuration.<clinit>(Configuration.java:151)
	br.com.caelum.lojavirtual.util.HibernateUtil.<clinit>(HibernateUtil.java:13)
	br.com.caelum.lojavirtual.util.DaoFactory.<init>(DaoFactory.java:14)
	br.com.caelum.lojavirtual.loja.DaoInterceptor.<init>(DaoInterceptor.java:13)
	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)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.


--------------------------------------------------------------------------------

Apache Tomcat/6.0.18

18 Respostas

T

vc deve estar tentando instanciar DaoInterceptor, mas o construtor dessa classe está como private. Não? Cheque isso…

ma.pops

Não cara, não tinha criado um construtor mas sei que por default ele é publico. Mas mesmo assim criei um construtor pra classe e não deu certo. Vo colocar aqui a classe pra você da uma olhada.

Vlw cara

package br.com.caelum.lojavirtual.loja;

import org.vraptor.Interceptor;
import org.vraptor.LogicException;
import org.vraptor.LogicFlow;
import org.vraptor.annotations.Out;
import org.vraptor.view.ViewException;

import br.com.caelum.lojavirtual.util.DaoFactory;

public class DaoInterceptor implements Interceptor{
	
	public DaoInterceptor(){
		
	}
	
	public final DaoFactory factory = new DaoFactory();
	
	public void intercept(LogicFlow flow) throws LogicException, ViewException{
		//System.out.println("Passei no intercept()");
		//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.caelum.lojavirtual.util.DaoFactory")
	public DaoFactory getFactory(){
		//System.out.println("Passei no getFactory()");
		return factory;
	}
}
T

sabe me dizer se ele chega a instanciar a DaoFactory uma vez e da problema na segunda ou nem chega a instanciar a primeira vez?? Tenta tirar “final” de daoFactory…

B
Talvez esta não seja a forma correta de instanciar o seu dao. Tente usar um singleton com um construtor privado.

Talvez esta não seja a forma correta de instanciar o seu dao. Tente usar um singleton com um construtor privado.

T

eu uso dessa maneira:

public class DaoInterceptor implements Interceptor {

    private DaoFactory factory;
    public static String dominio;
   
    public void intercept(LogicFlow flow) throws LogicException, ViewException {
        
        Session session = HibernateUtil.getSession();

        this.factory = new DaoFactory(session);

        
        flow.execute();
        
        if (factory.hasTransaction()) {
            factory.rollback();
        }
        factory.close();
    }

    @Out(key = DaoFactory.KEY)
    public DaoFactory getFactory() {
        return factory;
    }
    
    @Out(scope=ScopeType.SESSION)
    public String getDominioSession() {
        return dominioSession;
    }
}
T

Um construtor quando não é declarado explicitamente é protected e não public…

B

Um construtor quando não é declarado explicitamente é protected e não public…

Errado, é público.

T

Desculpem meu erro, realmente é público.

ma.pops

Alguem sabe como utilizar o Debbug em um projeto web?
porque eu queria ver até onde vai a execução do programa…

T

usa Eclipse ou netbeans?

Eclipse tem a perspectiva própria Debug e coloca os breakpoints…

Netbeans vc coloca os breakpoints e roda com Debug, em projeto web é ctrl F5

ma.pops

Entendi tinha feito exatamente isso.
então ele nem passa pela parte lógica
esse erro já aparece antes de cair em qualquer parte lógica

T

vc tem todas as libs do hibernate no seu projeto? nao ta faltando nada? vc ta tentando fazer akele exercicio da postila de vraptor da caelum?

ma.pops

E sim e o 5.8, da Apostila FJ-28 eu coloquei todas já
eu peguei um tutorial para montar aquele projeto da lojaVirtual
eu to fazendo igualzinho o da apostila e não está dando certo

T

vc tentou mudar a sua DaoInterceptor pelo código q te passei?

da pra ter quase certeza que algo ele não está conseguindo instanciar… o seu web.xml ta correto?

ma.pops
tentei aqui mano mais tem que mudar um monte de coisa e deu uns errors loucos aqui nessa parte
@Out(key = DaoFactory.KEY)   
    public DaoFactory getFactory() {   
        return factory;   
    }   
       
    @Out(scope=ScopeType.SESSION)   
    public String getDominioSession() {   
        return dominioSession;   
    }
T

muda essa parte

@Out(key = DaoFactory.KEY)     
    public DaoFactory getFactory() {     
        return factory;     
    }

por

@Out(key = "seu pacote que esta a classe DaoFactory")     
    public DaoFactory getFactory() {     
        return factory;     
    }
ma.pops

Troquei cara e continuou apresentando o mesmo problema
eu não entendi muito bem qual o erro

mas Vlw cara

ma.pops

Thiago,

eu voltei nos post e vi que você falou sobre o web.xml. Concerteza deve alguma coisa no web.xml errado, mas só não sei o que. Vo postar aqui e se você conseguir resolver eu agradeço. Valeu cara.

<?xml version="1.0" encoding="ISO-8859-1"?>
<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>lojaVirtual</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>vraptor2</servlet-name>
  	<servlet-class>org.vraptor.VRaptorServlet</servlet-class>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>vraptor2</servlet-name>  
  	<url-pattern>*.logic</url-pattern>
  </servlet-mapping>
  
</web-app>
Criado 25 de junho de 2009
Ultima resposta 28 de jun. de 2009
Respostas 18
Participantes 3