VRaptor nao redireciona view

49 respostas
A

estou implementado a famosa "agenda de contatos", mas agora com o vraptor; todos os jars ja estao no devido build path; mas quando eu tento acessar a url:

http://localhost:8080/agendaRaptor/contatos/formulario.jsp

meus jsps estao no local WEB-INF/jsp/contatos/formulario.jsp

tomo um 404 direto... mas ao meu ver, esta tudo certo, aqui vao as classes;

package com.agenda.modelo;

import java.util.Calendar;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Contato {

	@Id
	@GeneratedValue
	private String id;
	private String nome;
	private String email;
	private String endereco;
	private Calendar dataNascimento;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getEndereco() {
		return endereco;
	}

	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	public Calendar getDataNascimento() {
		return dataNascimento;
	}

	public void setDataNascimento(Calendar dataNascimento) {
		this.dataNascimento = dataNascimento;
	}
}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ taglib tagdir="/WEB-INF/tags" prefix="caelum" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Adicione um Contato na Pagina</title>
<style type="text/css">
body {
background-color:#00B2EE;
h2-color:#363636;
font-family: Verdana;
}
</style>
</head>
<body>
<c:import url="cabecalho.jsp"></c:import>

<h2>Adicione Seu Contato no Banco de Dados : </h2>

<form action="adiciona">
Nome: &lt;input id="nome" type="text" name="contato.nome" value="${contato.nome}"&gt; <br>

E-mail: &lt;input id="email" type="text" name="contato.email" value="${contato.email}"&gt; <br>

Endereço: &lt;input id="endereco" type="text" name="contato.endereco" value="${contato.endereco}"&gt; <br>

Data de Nascimento: &lt;caelum:campoData id="dataNascimento"/&gt; <br>

&lt;input type="submit" value="Gravar"&gt;
&lt;/form&gt;
&lt;hr&gt;
&lt;c:import url="rodape.jsp"&gt;&lt;/c:import&gt;

&lt;/body&gt;
&lt;/html&gt;
package com.agenda.dao;

import java.util.List;

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

import br.com.caelum.vraptor.ioc.Component;

import com.agenda.modelo.Contato;

@Component
public class ContatoDAO {
	private final Session session;
	
	public ContatoDAO(Session session) {
		this.session = session;
	}

	public void adiciona(Contato contato) {
		Transaction tx = session.beginTransaction();
		session.save(contato);
		tx.commit();
	}

	public void exclui(Contato contato) {
		Transaction tx = session.beginTransaction();
		session.delete(contato);
		tx.commit();
	}
	
	public void atualiza(Contato contato) {
		Transaction tx = session.beginTransaction();
		session.update(contato);
		tx.commit();
	}
	
	@SuppressWarnings("unchecked")
	public List&lt;Contato&gt; listaTudo() {
		return this.session.createCriteria(Contato.class).list();
	}
	
	public Contato carrega(Long id) {
		return (Contato) this.session.load(Contato.class, id);
	}
}
package com.agenda.controller;

import java.util.List;

import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;

import com.agenda.dao.ContatoDAO;
import com.agenda.modelo.Contato;

@Resource
public class ContatosController {
	private final ContatoDAO dao;
	private final Result result;
	
	public ContatosController(ContatoDAO dao, Result result) {
		this.dao = dao;
		this.result = result;
	}
	
	public void adiciona(Contato contato) {
		dao.adiciona(contato);
		result.redirectTo(this).lista();
	}

	public void exclui(Long id) {
		Contato contato = dao.carrega(id);
		dao.exclui(contato);
		result.redirectTo(this).lista();
	}
	
	public void atualiza(Contato contato) {
		dao.exclui(contato);
		result.redirectTo(this).lista();
	}
	
	public List&lt;Contato&gt; lista() {
		return dao.listaTudo();
	}
	
	
	public void formulario(){}
}
package com.agenda.infra;

import javax.annotation.PostConstruct;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;

@Component
public class CriadorDeSession implements ComponentFactory&lt;Session&gt; {
	
	private SessionFactory factory;
	private Session session;
	
	public CriadorDeSession(SessionFactory factory){
		this.factory = factory;
	}
	
	@PostConstruct
	public void abre(){
		this.session = factory.openSession();
		System.out.println("Metodo -abre- Session");
	}
	
	@Override
	public Session getInstance() {
		System.out.println("Metodo -getInstance- Session");
		return this.session;
	}

	public void fecha(){
		this.session.close();
		System.out.println("Metodo -fecha- Session");
	}
}
package com.agenda.infra;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;

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

import br.com.caelum.vraptor.ioc.ApplicationScoped;
import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.ComponentFactory;

@Component
@ApplicationScoped
public class CriadorDeSessionFactory implements ComponentFactory&lt;SessionFactory&gt; {

	private SessionFactory factory;
	
	@PostConstruct
	public void abre(){
		AnnotationConfiguration configuration = new AnnotationConfiguration();
		configuration.configure();
		this.factory = configuration.buildSessionFactory();
		System.out.println("Metodo -abre- SessionFactory");
	}
	
	@Override
	public SessionFactory getInstance() {
		System.out.println("Metodo -getInstance- SessionFactory");
		return this.factory;
	}
	
	@PreDestroy
	public void fecha(){
		this.factory.close();
		System.out.println("Metodo -fecha- SessionFactory");
	}
}
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;%@ taglib tagdir="/WEB-INF/tags" prefix="caelum" %&gt;
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;

&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"&gt;
&lt;title&gt;Adicione um Contato na Pagina&lt;/title&gt;
&lt;style type="text/css"&gt;
body {
background-color:#00B2EE;
h2-color:#363636;
font-family: Verdana;
}
&lt;/style&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;c:import url="cabecalho.jsp"&gt;&lt;/c:import&gt;

&lt;h2&gt;Adicione Seu Contato no Banco de Dados : &lt;/h2&gt;

&lt;form action="adiciona"&gt;
Nome: &lt;input id="nome" type="text" name="contato.nome" value="${contato.nome}"&gt; <br>

E-mail: &lt;input id="email" type="text" name="contato.email" value="${contato.email}"&gt; <br>

Endereço: &lt;input id="endereco" type="text" name="contato.endereco" value="${contato.endereco}"&gt; <br>

Data de Nascimento: &lt;caelum:campoData id="dataNascimento"/&gt; <br>

&lt;input type="submit" value="Gravar"&gt;
&lt;/form&gt;
&lt;hr&gt;
&lt;c:import url="rodape.jsp"&gt;&lt;/c:import&gt;

&lt;/body&gt;
&lt;/html&gt;

49 Respostas

L

a url correta é essa:

http://localhost:8080/agendaRaptor/contatos/formulario

[]'s

A

404 da mesma maneira;

L

o contexto da aplicação é agendaRaptor mesmo? não seria agendaVRaptor ou agendaVraptor ou algo do tipo?

A

nao… exatamente agendaRaptor… estou super confuso… ela esta praticamente igual a o que eu fiz na apostila fj28 - mas ela roda norma. ja a agenda… nao

L

habilita o log de debug do vraptor (https://github.com/caelum/vraptor/blob/master/vraptor-blank-project/src/log4j.xml)

e posta aqui o que aparece qdo sobe o servidor

A
GRAVE: Exception starting filter vraptor

org.springframework.beans.factory.BeanCreationException: Error creating bean with name criadorDeSessionFactory: Invocation of init method failed; nested exception is org.hibernate.MappingException: Unable to load class declared as <mapping class="com.agenda.modelo.Usuario "/> in the configuration:

at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:394)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1394)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:512)

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)

at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)

at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)

at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)

at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)

at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:557)

at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:842)

at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:416)

at br.com.caelum.vraptor.ioc.spring.SpringBasedContainer.start(SpringBasedContainer.java:68)

at br.com.caelum.vraptor.ioc.spring.SpringProvider.start(SpringProvider.java:82)

at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:110)

at br.com.caelum.vraptor.VRaptor.init(VRaptor.java:103)

at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:273)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:254)

at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)

at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4382)

at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5040)

at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5035)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

Caused by: org.hibernate.MappingException: Unable to load class declared as <mapping class="com.agenda.modelo.Usuario "/> in the configuration:

at org.hibernate.cfg.AnnotationConfiguration.parseMappingElement(AnnotationConfiguration.java:650)

at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1603)

at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1582)

at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:1047)

at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64)

at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1556)

at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:1035)

at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:64)

at org.hibernate.cfg.Configuration.configure(Configuration.java:1476)

at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1017)

at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:64)

at org.hibernate.cfg.Configuration.configure(Configuration.java:1462)

at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:1011)

at com.agenda.infra.CriadorDeSessionFactory.abre(CriadorDeSessionFactory.java:22)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

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

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

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

at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:340)

at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:293)

at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130)

 27 more

Caused by: java.lang.ClassNotFoundException: com.agenda.modelo.Usuario

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1643)

at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1488)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forName(Class.java:169)

at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:192)

at org.hibernate.cfg.AnnotationConfiguration.parseMappingElement(AnnotationConfiguration.java:647)

 47 more

01/03/2011 19:25:49 org.apache.catalina.core.StandardContext startInternal

GRAVE: Error filterStart

01/03/2011 19:25:49 org.apache.catalina.core.StandardContext startInternal

GRAVE: Context [/agendaRaptor] startup failed due to previous errors

01/03/2011 19:25:49 org.apache.coyote.AbstractProtocolHandler start

INFO: Starting ProtocolHandler [http-bio-8080]

01/03/2011 19:25:49 org.apache.coyote.AbstractProtocolHandler start

INFO: Starting ProtocolHandler [ajp-bio-8009]

01/03/2011 19:25:49 org.apache.catalina.startup.Catalina start

INFO: Server startup in 29161 ms
A
log4j:WARN Fatal parsing error 2 and column 6

log4j:WARN The processing instruction target matching [xX][mM][lL] is not allowed.

log4j:ERROR Could not parse url [file:/home/aajjbb/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/agendaRaptor/WEB-INF/classes/log4j.xml].

org.xml.sax.SAXParseException: The processing instruction target matching [xX][mM][lL] is not allowed.

at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:249)

at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:284)

at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:180)

at org.apache.log4j.xml.DOMConfigurator$2.parse(DOMConfigurator.java:690)

at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:789)

at org.apache.log4j.xml.DOMConfigurator.doConfigure(DOMConfigurator.java:696)

at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:471)

at org.apache.log4j.LogManager.<clinit>(LogManager.java:125)

at org.slf4j.impl.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:73)

at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)

at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:254)

at br.com.caelum.vraptor.VRaptor.<clinit>(VRaptor.java:60)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

at java.lang.Class.newInstance0(Class.java:355)

at java.lang.Class.newInstance(Class.java:308)

at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:119)

at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:252)

at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:372)

at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:98)

at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4382)

at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5040)

at org.apache.catalina.core.StandardContext$2.call(StandardContext.java:5035)

at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

at java.util.concurrent.FutureTask.run(FutureTask.java:138)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

log4j:WARN No appenders could be found for logger (br.com.caelum.vraptor.config.BasicConfiguration).

log4j:WARN Please initialize the log4j system properly.
G

O erro está aqui:

Provavelmente a classe em questão não exista, ou esteja em pacote diferente.

A

na verdade essa classe existe. e o pacote esta correto. mas por via das duvidas exclui ela; e agora… a stacktrace que levo e essa ultima que colei ai em cima;

L

a classe está anotada com @javax.persistence.Entity?

o erro acima (bizarramente) deve ser pq vc colocou no seu log4j.xml o preambulo:

<?xml ....>

tenta tirar isso

A

so por tirar o <xml…* ja nao tomei o 404. mas agora deu isso

br.com.caelum.vraptor.http.route.RouteNotFoundException: The selected route is invalid for redirection: com.agenda.controller.LoginController.formulario

br.com.caelum.vraptor.http.route.DefaultRouter.urlFor(DefaultRouter.java:142)

br.com.caelum.vraptor.view.DefaultLogicResult$2.intercept(DefaultLogicResult.java:118)

br.com.caelum.vraptor.proxy.AbstractCglibProxifier$2.intercept(AbstractCglibProxifier.java:56)

com.agenda.controller.LoginController$$EnhancerByCGLIB$$4b618e38.formulario(><generated>)

com.agenda.interceptors.LoginInterceptor.intercept(LoginInterceptor.java:29)

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.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)
L

LoginController está anotado com o @Resource do VRaptor?

A

nao… ai estava o erro. agora redirecionou normalmente… desculpem o tempo pela falta de atenção…

A

estranho… quando agora tento me autenticar, no log me aparece isso… nao estou conseguindo identificar muito o que quer me dizer
por tantos “miss” acho que esta faltando algum jar

21:32:34,827 DEBUG [VRaptor             ] VRaptor received a new request

21:32:34,846 DEBUG [VRaptorApplicationContext] Cache miss for interface br.com.caelum.vraptor.http.EncodingHandler

21:32:34,859 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.http.EncodingHandlerFactory

21:32:34,866 DEBUG [VRaptorApplicationContext] Cache miss for interface br.com.caelum.vraptor.core.RequestExecution

21:32:34,879 DEBUG [DefaultRequestExecution] executing stack  DefaultRequestExecution

21:32:34,882 DEBUG [VRaptorApplicationContext] Cache miss for interface br.com.caelum.vraptor.interceptor.multipart.MultipartInterceptor

21:32:34,967 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor

21:32:34,982 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor

21:32:34,983 DEBUG [DefaultResourceTranslator] trying to access /login/autentica

21:32:34,996 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: LoginController.autenticaLoginController.autentica(Usuario)]

21:32:34,996 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.interceptor.FlashInterceptor

21:32:35,011 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor

21:32:35,011 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor

21:32:35,016 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InterceptorListPriorToExecutionExtractor

21:32:35,026 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.interceptor.multipart.Servlet3MultipartInterceptor

21:32:35,027 DEBUG [VRaptorApplicationContext] Cache miss for class com.agenda.interceptors.LoginInterceptor

21:32:35,037 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.interceptor.InstantiateInterceptor

21:32:35,041 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor

21:32:35,042 DEBUG [VRaptorApplicationContext] Cache miss for class com.agenda.controller.LoginController

21:32:35,044 DEBUG [VRaptorApplicationContext] Cache miss for class com.agenda.infra.CriadorDeSession

21:32:35,046 DEBUG [VRaptorApplicationContext] Cache miss for class com.agenda.infra.CriadorDeSessionFactory

Metodo -getInstance- SessionFactory

Metodo -abre- Session

Metodo -getInstance- Session

21:32:35,110 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor

21:32:35,171 DEBUG [LazyInterceptorHandler] Invoking interceptor ParametersInstantiatorInterceptor

21:32:35,177 DEBUG [JstlLocalization    ] couldnt find message bundle, creating an empty one

21:32:35,177 DEBUG [AsmBasedTypeCreator ] Trying to make class for LoginController$autentica$976579820$1

21:32:35,190 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for LoginController.autentica(Usuario) as [usuario]

21:32:35,191 DEBUG [AsmBasedTypeCreator ] Parameter names found for creating type are: [Usuario]

21:32:35,191 DEBUG [AsmBasedTypeCreator ] Method for field Usuario being defined for type Lcom/agenda/modelo/Usuario;

21:32:35,193 DEBUG [AsmBasedTypeCreator ] Methods: [public com.agenda.modelo.Usuario LoginController$autentica$976579820$1.getUsuario(), public void LoginController$autentica$976579820$1.setUsuario(com.agenda.modelo.Usuario)]

21:32:35,193 DEBUG [AsmBasedTypeCreator ] Fields: [private com.agenda.modelo.Usuario LoginController$autentica$976579820$1.Usuario_]

21:32:35,193 DEBUG [CacheBasedTypeCreator] cached generic type for method [DefaultResourceMethod: LoginController.autenticaLoginController.autentica(Usuario)]

21:32:35,203 DEBUG [OgnlParametersProvider] Applying usuario.login with [aajjbb]

21:32:35,241 DEBUG [OgnlParametersProvider] Applying usuario.senha with [aajjbb]

21:32:35,242 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for LoginController.autentica(Usuario) as [usuario]

21:32:35,242 DEBUG [ParametersInstantiatorInterceptor] Parameter values for [DefaultResourceMethod: LoginController.autenticaLoginController.autentica(Usuario)] are [com.agenda.modelo.Usuario@11e1813]

21:32:35,243 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor

21:32:35,248 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor

21:32:35,248 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor

21:32:35,254 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor

21:32:35,254 DEBUG [ExecuteMethodInterceptor] Invoking LoginController.autentica(Usuario)

Hibernate:

select

usuario0_.id as id1_,

usuario0_.login as login1_,

usuario0_.senha as senha1_

from

Usuario usuario0_

where

usuario0_.login=?

and usuario0_.senha=?

21:32:35,488 DEBUG [VRaptorApplicationContext] Cache miss for interface br.com.caelum.vraptor.view.LogicResult

21:32:35,508 DEBUG [DefaultLogicResult  ] redirecting to class ContatosController

21:32:35,623 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ContatosController.formulario() as []

21:32:35,623 DEBUG [AsmBasedTypeCreator ] Trying to make class for ContatosController$formulario$[telefone removido]$2

21:32:35,623 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for ContatosController.formulario() as []

21:32:35,623 DEBUG [AsmBasedTypeCreator ] Parameter names found for creating type are: []

21:32:35,624 DEBUG [AsmBasedTypeCreator ] Methods: []

21:32:35,624 DEBUG [AsmBasedTypeCreator ] Fields: []

21:32:35,624 DEBUG [CacheBasedTypeCreator] cached generic type for method [DefaultResourceMethod: ContatosController.formularioContatosController.formulario()]

21:32:35,624 DEBUG [DefaultLogicResult  ] redirecting to /agenda/contatos/formulario

21:32:35,625 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.extra.ForwardToDefaultViewInterceptor

21:32:35,628 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor

21:32:35,629 DEBUG [ForwardToDefaultViewInterceptor] Request already dispatched and commited somewhere else, not forwarding.

21:32:35,629 DEBUG [VRaptor             ] VRaptor ended the request

21:32:35,632 DEBUG [VRaptor             ] VRaptor received a new request

21:32:35,633 DEBUG [DefaultRequestExecution] executing stack  DefaultRequestExecution

21:32:35,644 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor

21:32:35,644 DEBUG [DefaultResourceTranslator] trying to access /contatos/formulario

21:32:35,645 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: ContatosController.formularioContatosController.formulario()]

21:32:35,646 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor

21:32:35,646 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InterceptorListPriorToExecutionExtractor

21:32:35,647 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor LoginInterceptor

21:32:35,651 DEBUG [DefaultLogicResult  ] redirecting to class LoginController

21:32:35,662 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for LoginController.formulario() as []

21:32:35,662 DEBUG [AsmBasedTypeCreator ] Trying to make class for LoginController$formulario$[telefone removido]$3

21:32:35,662 DEBUG [ParanamerNameProvider] Found parameter names with paranamer for LoginController.formulario() as []

21:32:35,662 DEBUG [AsmBasedTypeCreator ] Parameter names found for creating type are: []

21:32:35,662 DEBUG [AsmBasedTypeCreator ] Methods: []

21:32:35,662 DEBUG [AsmBasedTypeCreator ] Fields: []

21:32:35,662 DEBUG [CacheBasedTypeCreator] cached generic type for method [DefaultResourceMethod: LoginController.formularioLoginController.formulario()]

21:32:35,663 DEBUG [DefaultLogicResult  ] redirecting to /agenda/login/formulario

21:32:35,663 DEBUG [VRaptor             ] VRaptor ended the request

21:32:35,665 DEBUG [VRaptor             ] VRaptor received a new request

21:32:35,666 DEBUG [DefaultRequestExecution] executing stack  DefaultRequestExecution

21:32:35,674 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor

21:32:35,675 DEBUG [DefaultResourceTranslator] trying to access /login/formulario

21:32:35,675 DEBUG [DefaultResourceTranslator] found resource [DefaultResourceMethod: LoginController.formularioLoginController.formulario()]

21:32:35,676 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor FlashInterceptor

21:32:35,676 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InterceptorListPriorToExecutionExtractor

21:32:35,678 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor InstantiateInterceptor

Metodo -getInstance- SessionFactory

Metodo -abre- Session

Metodo -getInstance- Session

21:32:35,681 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExceptionHandlerInterceptor

21:32:35,682 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ExecuteMethodInterceptor

21:32:35,682 DEBUG [ExecuteMethodInterceptor] Invoking LoginController.formulario()

21:32:35,682 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ForwardToDefaultViewInterceptor

21:32:35,683 DEBUG [ForwardToDefaultViewInterceptor] forwarding to the dafault page for this logic

21:32:35,683 DEBUG [VRaptorApplicationContext] Cache miss for interface br.com.caelum.vraptor.view.PageResult

21:32:35,689 DEBUG [DefaultPageResult   ] forwarding to /WEB-INF/jsp/login/formulario.jsp

21:32:35,692 DEBUG [DefaultStaticContentHandler] Deferring request to container: /agenda/WEB-INF/jsp/login/formulario.jsp

21:32:35,762 DEBUG [VRaptor             ] VRaptor ended the request
L

isso é normal. Logs DEBUG geralmente são só detalhes de implementação. Se preocupe só quando o log for WARN ou ERROR.

Sugiro que vc suba o level de log pra INFO, principalmente em produção

A

sim. mas agora; depois do login. ele nao redireciona para formulario de contatos como eu gostaria… so da esse log mesmo;

L

como e onde vc está fazendo o redirecionamento?

A
package com.agenda.controller;

import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;

import com.agenda.component.UsuarioLogado;
import com.agenda.dao.UsuarioDAO;
import com.agenda.modelo.Usuario;

@Resource
public class LoginController {
	private UsuarioDAO usuarioDao;
	private UsuarioLogado usuarioLogado;
	private Result result;

	public LoginController(UsuarioDAO usuarioDao, UsuarioLogado usuarioLogado,
			Result result) {
		this.usuarioDao = usuarioDao;
		this.usuarioLogado = usuarioLogado;
		this.result = result;
	}

	public void autentica(Usuario usuario) {
		Usuario autenticado = usuarioDao.buscaUsuarioPorLoginESenha(usuario);
		if (autenticado != null) {
			usuarioLogado.efetuaLogin(autenticado);
			result.redirectTo(ContatosController.class).lista();
			return;
		}
		result.redirectTo(ContatosController.class).formulario();
	}

	public void formulario() {
	}

}
L

vc está chamando a url do autentica? pelo log esse método não foi chamado

A

chamar a url… no controller? nao entendi muito bem… aqui vao os jsps

&lt;%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&gt;
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"&gt;
&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;
&lt;title&gt;Formulario de Login&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;h2&gt;Login no Controle de Produtos&lt;/h2&gt;
	&lt;form action="&lt;c:url value="/login/autentica"/&gt;"&gt;
		Login: &lt;input id="login" type="text" name="usuario.login" value="${usuario.login}"/&gt;<br />
		Senha: &lt;input id="senha" type="password" name="usuario.senha" value="${usuario.senha}"/&gt;
		&lt;input type="submit" value="Autenticar" /&gt;
	&lt;/form&gt;

&lt;/body&gt;
&lt;/html&gt;
L

e tanto se cai dentro do if quanto fora tá indo pro lugar errado?

A

sim

L

e o que acontece, pra onde vai?

A

volta direto pra tela de login novamente

L

a classe UsuarioLogado está anotada com @SessionScoped?

vc tem algum interceptor que redireciona caso esteja sem login?

G

VRaptor e seus problemas … mas uma vez digo, nao vi uma vantagem em usar VRaptor ate hj …

L

God_of_Java, vantagem em relação a o que? sem uma referência sua afirmação é vazia, e não acrescenta nada na discussão nem na resposta das dúvidas das pessoas.

K

Jovem,
mandou muito bem.

A

sim… e esta anotada com SessionScope sim… quando o login nao é valido, eu redireciono para a tela de login denovo… da uma olhada;

package com.agenda.interceptors;

import br.com.caelum.vraptor.InterceptionException;
import br.com.caelum.vraptor.Intercepts;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.core.InterceptorStack;
import br.com.caelum.vraptor.interceptor.Interceptor;
import br.com.caelum.vraptor.resource.ResourceClass;
import br.com.caelum.vraptor.resource.ResourceMethod;

import com.agenda.controller.LoginController;
import com.agenda.infra.UsuarioLogado;

@Intercepts
public class LoginInterceptor implements Interceptor {
	private UsuarioLogado usuarioLogado;
	private Result result;
	
	public LoginInterceptor(UsuarioLogado usuarioLogado, Result result) {
		this.usuarioLogado = usuarioLogado;
		this.result = result;
	}
	
	@Override
	public void intercept(InterceptorStack stack, ResourceMethod method, Object instance) throws InterceptionException {
		if(usuarioLogado.getUsuarioLogado() != null) {
			stack.next(method, instance);
		} else {
			result.redirectTo(LoginController.class).formulario();
		}
	}
	
	@Override
	public boolean accepts(ResourceMethod method) {
		ResourceClass resource = method.getResource();
		return !resource.getType().isAssignableFrom(LoginController.class);
	}
}
L

e como está a classe UsuarioLogado?

A
package com.agenda.infra;

import br.com.caelum.vraptor.ioc.Component;
import br.com.caelum.vraptor.ioc.SessionScoped;

import com.agenda.modelo.Usuario;
@Component
@SessionScoped
public class UsuarioLogado {
	private Usuario usuarioLogado;
		
	public void efetuaLogin(Usuario usuario) {
			this.setUsuarioLogado(usuario);
	}

	public void setUsuarioLogado(Usuario usuarioLogado) {
		this.usuarioLogado = usuarioLogado;
	}

	public Usuario getUsuarioLogado() {
		return usuarioLogado;
	}
		

}
L

sobe o servidor em modo de debug e coloque breakpoints nos métodos do UsuarioLogado.

veja se dentro do login ele seta direitinho o usuario e se qdo passa no iinterceptor o usuario ainda está lá

A

coloquei… gerou umas exceptions estranhas, depois voltei ao modo normal. rodou… so to tendo uns probleminhas com o ajax pra excuir e editar os contatos, provavelmente vou voltar em breve, mas muito obrigado pela ajuda;

A

agora… usando as anotações path,e tetando colocar o projeto, no padrão REST, anotei meus controllers… mas agora, com a as uri’s novas e tambem com as antigas, levo um 404; como ficaram meus controllers

package com.agenda.controller;

import java.util.List;

import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;

import com.agenda.dao.ContatoDAO;
import com.agenda.modelo.Contato;

@Resource
public class ContatosController {
	private final ContatoDAO dao;
	private final Result result;
	
	public ContatosController(ContatoDAO dao, Result result) {
		this.dao = dao;
		this.result = result;
	}
	
	@Post @Path("/contatos")
	public void adiciona(Contato contato) {
		dao.adiciona(contato);
		result.redirectTo(this).lista();
	}

	@Delete @Path("/contatos/{id}")
	public void exclui(Long id) {
		Contato contato = dao.carrega(id);
		dao.exclui(contato);
		result.redirectTo(this).lista();
	}
	
	@Put @Path("/contatos/{contato.id")
	public void atualiza(Contato contato) {
		dao.atualiza(contato);
		result.redirectTo(this).lista();
	}
	
	@Get @Path("contatos/{id}")
	public Contato edita(Long id){
		return dao.carrega(id);
	}
	
	@Path("/produtos")
	public List&lt;Contato&gt; lista() {
		return dao.listaTudo();
	}
	
	@Get @Path("/contatos/novo")
	public void formulario(){}
}
package com.agenda.controller;

import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;

import com.agenda.dao.UsuarioDAO;
import com.agenda.infra.UsuarioLogado;
import com.agenda.modelo.Usuario;

@Resource
public class LoginController {
	private UsuarioDAO usuarioDao;
	private UsuarioLogado usuarioLogado;
	private Result result;

	public LoginController(UsuarioDAO usuarioDao, UsuarioLogado usuarioLogado, Result result) {
		this.usuarioDao = usuarioDao;
		this.usuarioLogado = usuarioLogado;
		this.result = result;
	}

	public void autentica(Usuario usuario) {
		Usuario autenticado = usuarioDao.buscaUsuarioPorLoginESenha(usuario);
		if (autenticado != null) {
			usuarioLogado.efetuaLogin(autenticado);
			result.redirectTo(ContatosController.class).lista();
			return;
		}
		result.redirectTo(LoginController.class).formulario();
	}
	
	@Path("/")
	public void formulario() {
	}

}
L

a url “/contatos/novo” funciona?

tome cuidado com os verbos HTTP agora… por exemplo o método exclui só pode ser chamado com o verbo http DELETE ou com o parâmetro _method=DELETE (dentro de um post)

A

nao funciona… tomo 404 ja; e nenhuma nota de debug ou exception;

L

habilite o log de debug do vraptor, e olhe no log qdo vc inicia o servidor.

no finalzinho deve ter algo parecido com:

16:03:02,687  INFO [DefaultRouteBuilder ] /index                                            [GET] -> HomeController.index()
16:03:02,691  INFO [DefaultRouteBuilder ] /contatos/novo                                      [GET] -> ContatosController.formulario()

contendo todos as urls dos controllers.
isso aparece?

G

Meu post não tem muito a ver com tua dúvida, mas ao invés de usar um sistema proprio de login, porque você não usa JAAS? Assim vocẽ não precisa criar nada, basta configurar o serviço com o tipo de autenticação que você precisa (LDAP, banco de dados, certificado), indicar as roles, e tudo pronto.

A

sim. era um erro de digitação. mas agora; quando eu chamo meu formulario de entrada de contatos; recebo uma MethodNotAllowedException… estou fazendo uma confusão com os metodos http; olha a stack

17:23:58,372 DEBUG [VRaptor             ] VRaptor received a new request

17:23:58,387 DEBUG [VRaptorApplicationContext] Cache miss for interface br.com.caelum.vraptor.http.EncodingHandler

17:23:58,396 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.http.EncodingHandlerFactory

17:23:58,402 DEBUG [VRaptorApplicationContext] Cache miss for interface br.com.caelum.vraptor.core.RequestExecution

17:23:58,419 DEBUG [DefaultRequestExecution] executing stack  DefaultRequestExecution

17:23:58,422 DEBUG [VRaptorApplicationContext] Cache miss for interface br.com.caelum.vraptor.interceptor.multipart.MultipartInterceptor

17:23:58,500 DEBUG [VRaptorApplicationContext] Cache miss for class br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor

17:23:58,516 DEBUG [ToInstantiateInterceptorHandler] Invoking interceptor ResourceLookupInterceptor

17:23:58,516 DEBUG [DefaultResourceTranslator] trying to access /contatos/formulario

17:23:58,531 DEBUG [ResourceLookupInterceptor] Method GET is not allowed for requested URI. Allowed Methods are [PUT, DELETE]

br.com.caelum.vraptor.http.route.MethodNotAllowedException: Method GET is not allowed for requested URI. Allowed Methods are [PUT, DELETE]

at br.com.caelum.vraptor.http.route.DefaultRouter.routesMatchingUriAndMethod(DefaultRouter.java:110)

at br.com.caelum.vraptor.http.route.DefaultRouter.parse(DefaultRouter.java:83)

at br.com.caelum.vraptor.http.DefaultResourceTranslator.translate(DefaultResourceTranslator.java:59)

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

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

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

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

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

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

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

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

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

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:550)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:380)

at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)

at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:288)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at java.lang.Thread.run(Thread.java:662)

17:23:58,532 DEBUG [VRaptor             ] VRaptor ended the request
package com.agenda.controller;

import java.util.List;

import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;

import com.agenda.dao.ContatoDAO;
import com.agenda.modelo.Contato;

@Resource
public class ContatosController {
	private final ContatoDAO dao;
	private final Result result;
	
	public ContatosController(ContatoDAO dao, Result result) {
		this.dao = dao;
		this.result = result;
	}
	
	@Post @Path("/contatos")
	public void adiciona(Contato contato) {
		dao.adiciona(contato);
		result.redirectTo(this).lista();
	}

	@Delete @Path("/contatos/{id}")
	public void exclui(String id) {
		Contato contato = dao.carrega(id);
		dao.exclui(contato);
		result.redirectTo(this).lista();
	}
	
	@Put @Path("/contatos/{contato.id}")
	public void atualiza(String id) {
		Contato contato = dao.carrega(id);
		dao.atualiza(contato);
		result.redirectTo(this).lista();
	}
		
	@Get @Path("/contatos")
	public List&lt;Contato&gt; lista() {
		return dao.listaTudo();
	}
	
	@Get @Path("/contatos/novo")
	public void formulario(){}
}
L

não é mais /contatos/formulario a URI, agora é “/contatos/novo”

A

sim. nao tinha atentado a esse detalhe, mas agora; hoje quando fui rodar o tomcat e abrir a agenda. recebi essa stacktrace complemante estranha; engraçado, que nao fiz nenhuma alteração no codigo…

br.com.caelum.vraptor.view.ResultException: javax.servlet.ServletException: java.lang.ClassFormatError: Truncated class file

br.com.caelum.vraptor.view.DefaultPageResult.forward(DefaultPageResult.java:69)

br.com.caelum.vraptor.extra.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:59)

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.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)

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.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

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

javax.servlet.ServletException: java.lang.ClassFormatError: Truncated class file

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:343)

javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:64)

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

br.com.caelum.vraptor.view.DefaultPageResult.forward(DefaultPageResult.java:67)

br.com.caelum.vraptor.extra.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:59)

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.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)

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.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

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.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.ClassFormatError: Truncated class file

java.lang.ClassLoader.defineClass1(Native Method)

java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)

java.lang.ClassLoader.defineClass(ClassLoader.java:616)

java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)

java.net.URLClassLoader.defineClass(URLClassLoader.java:283)

java.net.URLClassLoader.access$000(URLClassLoader.java:58)

java.net.URLClassLoader$1.run(URLClassLoader.java:197)

java.security.AccessController.doPrivileged(Native Method)

java.net.URLClassLoader.findClass(URLClassLoader.java:190)

org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:132)

org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:63)

org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:162)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:354)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)

javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:64)

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

br.com.caelum.vraptor.view.DefaultPageResult.forward(DefaultPageResult.java:67)

br.com.caelum.vraptor.extra.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:59)

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.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:75)

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.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)

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.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)
L

muito estranho isso. Tenta dar um clean no projeto (e no server) e recompilar as classes.

A

é. mesmo dando um clean em ambos… continua acontecendo a mesma coisa;

L

talvez seja algum problema com os jsps… tem algo de errado com o jsp? vc tá com um jsp*.jar, standard.jar ou jstl*.jar no WEB-INF/lib (se tiver, tire)

A

ja retirei os jars da jstl… mesmo assim, mesmo erro;

L

como vc está fazendo o deploy no servidor? eclipse?

A

sim;

G

Estranho mesmo o erro. Minha sugestão é um refresh na workspace, seguido de um clean. Não esqueça de limpar o work do tomcat (se você usa via eclipse WTP o work do tomcat fica dentro da workspace).

A

mais uma do eclipse… criei outra workspace… e voltou a funcionar; sera que isso é so um problema comigo… nao é a primeira vez, que do nada, alguma projeto meu da uma zebra inexplicavel… eu gosto do eclipse. mas isso enche a paciencia;

Criado 1 de março de 2011
Ultima resposta 7 de mar. de 2011
Respostas 49
Participantes 5