Ace
Outubro 4, 2011, 1:04pm
#1
Boa tarde Pessoal,
estou tento erro 404 com o vraptor.
um detalhe importante é que este projeto já estava funcionando corretamente, fiz uma pequena alteração em minha logic e já era 404…
está tudo configurado como manda o script.
tenho a “logic”, com o metodo da minha pagina, tenho a “ok.jsp” e o redirecionamento na view.properties tudo certo… e essa porcaria rs, continua a me dar 404
alguma ideia?
Ace, voce está usando a versão 2 do VRaptor ou a versão 3 no modo de compatibilidade ?
Posta por favor a sua Logic pra gente e o caminho relativo onde está o seu JSP
Abraço
Ace
Outubro 4, 2011, 1:25pm
#3
Estou usando a versão 2
Logic
package br.com.egvc.lojavirtual.logic;
import java.util.List;
import org.vraptor.annotations.Component;
import org.vraptor.annotations.In;
import org.vraptor.annotations.InterceptedBy;
import org.vraptor.annotations.Out;
import org.vraptor.scope.ScopeType;
import br.com.egvc.lojavirtual.dao.DaoFactory;
import br.com.egvc.lojavirtual.mail.Email;
import br.com.egvc.lojavirtual.modelo.Chamada;
import br.com.egvc.lojavirtual.modelo.ClienteGrafica;
import br.com.egvc.lojavirtual.modelo.Curriculo;
import br.com.egvc.lojavirtual.modelo.GraficaOrcamento;
import br.com.egvc.lojavirtual.loja.DaoInterceptor;
@Component("grafica")
@InterceptedBy(DaoInterceptor.class)
public class GraficaLogic {
private final DaoFactory factory;
private List<Chamada> chamadas;
@In(scope=ScopeType.SESSION,required=false)
@Out(scope=ScopeType.SESSION)
private ClienteGrafica clienteGrafica;
public GraficaLogic(DaoFactory factory){
this.factory = factory;
}
public void curriculo(){
}
public void currform(){
}
public void admin(){
}
public void sobre(){
}
public void equipe(){
}
public void servicos(){
}
public void orcamento(){
}
public void orcform(){
}
public void canal(){
}
public void localizacao(){
}
public void home(){
Chamada c = new Chamada();
c.setCanal(4);
this.chamadas = this.factory.getChamadaDao().loadChamadas(c);
}
public List<Chamada> getChamadas(){
return this.chamadas;
}
public void enviaCurriculo(Curriculo c){
Email email = new Email();
email.enviaCurriculo(c);
}
public void enviaGraficaOrcamento(GraficaOrcamento graficaOrcamento){
Email email = new Email();
email.emailGraficaOrcamento(graficaOrcamento);
}
public String efetuaLogin(ClienteGrafica clienteGrafica ){
this.clienteGrafica = this.factory.getClienteGraficaDao().existeUnico(clienteGrafica);
if(this.clienteGrafica == null)return "failed";
return "ok";
}
public void formCanalLogin(){
}
// GETTERS----------- >
public ClienteGrafica getClienteGrafica(){
return this.clienteGrafica;
}
public void canalLogout(){
this.clienteGrafica = null;
}
}
Em WebContent -> grafica -> tenho o arquivo chamado formCanalLogin.ok.jsp
um detalhe importante tbm, é que eu voltei as alterações que havia feito, apaguei o novo método inserido e rodei novamente, e NADA =\
vlw
Obrigado Ace, vamos la
voce acessa a url: /SeuContextPath/grafica.formCanalLogin.logic
Para chegar na JSP voce esta deixando o VRaptor resolver isso ?
OU esta colocando no views.properties: grafica.formCanalLogin.ok = /grafica/formCanalLogin.ok.jsp ?
Pelo que me lembro, por convenção o VRaptor vai perceber que vc usou um metodo void e vai resolve-lo certinho, mas se vc usar por configuração via views.properties também está certo. Se estiver usando views.properties, confere se ele esta igual ao que falei.
Se ainda estiver tudo certo, eu acredito que seja algo interceptor ou falha no deploy do seu servidor
Ace
Outubro 4, 2011, 1:57pm
#5
jvlouvem vlw pela atenção,
-Cara estou deixando o Vraptor resolver isso para acessar, estou fazendo da seguinte forma:
grafica.formCanalLogin.logic
e uso a view.properties somente qdo um usuario se loga mesmo, fazendo o redirecionamento para o lugar certo…
agora não sei o que fazer…! =\
Ace
Outubro 4, 2011, 2:15pm
#6
Tenho o backup do projeto em que estou mexendo…substitui o arquivo “DaoInterceptor” e agora não me dá mais 404 agora é tela branca…
é… complicado mesmo sua situação…
Desconfio ainda que é o servidor que está desatualizado, exemplo, ja tive muito problema de fazer tudo certinho e ter que fazer manobras do tipo:
deletar o tomcat do eclipse, coloca-lo novamente, starta-lo sem projeto, depois colocar o projeto e ai sim o camarada funcionava.
Mas enfim, me parece estar tudo certo
Talvez o Lucas Cavalcante ou outro developer do VRaptor passe por aqui e ache algo de estranho que nao vimos
Abraços
Hum então era o Interceptor mesmo.
Se da Tela Branca, salve o codigo do JSP e apague todo o conteudo e escreva somente
TESTE !
Se aparecer isso esta tudo certo dai vc parte para o debug para saber o que deve ir para tela que nao esta sendo preenchido na sua Logic
Ace
Outubro 4, 2011, 2:23pm
#9
Pois é rapaz, osso mesmo!
o problema é que este projeto está rodando em produção, e tem varias outras coisas rodando então não posso deletar tudo e subir novamente rsrs…
mas enfim, vou vendo por aqui o que consigo…
vlw pela atenção…
Ace
Outubro 4, 2011, 2:29pm
#10
Fiz o que me falou e ainda pagina em Branco…! elaia…isso ta me tirando do sério rsrs
dá uma olhada nos interceptors para ver se algum esqueceu de fazer o flow…
e considere migrar pro vraptor 3, o 2 não está mais sendo desenvolvido
Ace
Outubro 5, 2011, 2:23pm
#12
Lucas Cavalcanti, vlw pela atenção
então estou trabalhando com 2 interceptor, um que verifica se a sessão tem um login, e um DaoInterceptor.
DaoInterceptor
package br.com.egvc.lojavirtual.loja;
import java.util.Date;
import org.vraptor.Interceptor;
import org.vraptor.LogicException;
import org.vraptor.LogicFlow;
import org.vraptor.annotations.In;
import org.vraptor.annotations.Out;
import org.vraptor.scope.ScopeType;
import org.vraptor.view.ViewException;
import br.com.egvc.lojavirtual.dao.DaoFactory;
import br.com.egvc.lojavirtual.modelo.Acesso;
import br.com.egvc.lojavirtual.modelo.Cliente;
public class DaoInterceptor implements Interceptor {
@In(scope=ScopeType.SESSION,required=false)
private Cliente cliente;
@In(scope=ScopeType.SESSION, required=false)
@Out(scope=ScopeType.SESSION)
private Navegador navegador = new Navegador();
@In(scope=ScopeType.SESSION, required=false)
@Out(scope=ScopeType.SESSION)
private Acesso acesso = new Acesso();
private final DaoFactory factory = new DaoFactory();
public void intercept(LogicFlow flow) throws LogicException, ViewException{
String id = null;
String ip = null;
String browser = null;
// Contador de Acessos
// Analisa o Acesso e adiciona na lista caso seja um novo acesso
if(this.acesso.getId() == null || this.cliente != null){
id = flow.getLogicRequest().getRequest().getSession().getId();
ip = flow.getLogicRequest().getRequest().getRemoteAddr();
browser = flow.getLogicRequest().getRequest().getHeader("user-agent");
if(id != null && ip != null && browser != null){
this.acesso.setId(id);
this.acesso.setData(new Date());
this.acesso.setIp(ip);
this.acesso.setNavegador(browser);
if(this.cliente != null){
this.acesso.setCliente(this.cliente);
}
if(this.acesso.getId() != null ){
if(this.factory.getAcessoDao().getById(this.acesso) == null){
this.factory.beginTransaction();
this.factory.getAcessoDao().adiciona(this.acesso);
this.factory.commit();
}else{
this.factory.beginTransaction();
this.factory.getAcessoDao().altera(this.acesso);
this.factory.commit();
}
}
}
}
/*---------------------------------------------------------------------------------------------*/
String urlRequest = flow.getLogicRequest().getRequest().getRequestURI();
String query = flow.getLogicRequest().getRequest().getQueryString();
if(navegador.getRemoteAddr() == null)navegador.setRemoteAddr(flow.getLogicRequest().getRequest().getRemoteAddr());
try{
urlRequest = urlRequest.replace("/", "");
}catch(Exception e){
System.out.println("QueryString vazia!");
}
if(query == null)query = "";
this.navegador.setAtualPage(urlRequest+"?"+query);
if(urlRequest.contains("egvc")){
//System.out.println("Chamada Canal EGVC <------------------");
this.navegador.setPageTipo(1);
this.navegador.setPrevOnclick();
}else{
this.navegador.setPageTipo(0);
this.navegador.setPrevOnclick();
}
flow.execute();
if (factory.hasTransaction()) {
factory.rollBack();
}
/*System.out.println("REQUISIO DE GINA:"+this.navegador.getAtualPage());
System.out.println("PGINA ANTERIOR:"+this.navegador.getPrevPage());
System.out.println(this.navegador.getPrevOnclick());
System.out.println("NAVEGADOR DO USURIO = "+flow.getLogicRequest().getRequest().getHeader("user-agent"));
System.out.println("IPADDR DO USURIO = "+flow.getLogicRequest().getRequest().getRemoteAddr());*/
factory.close();
}
@Out(key="br.com.egvc.lojavirtual.dao.DaoFactory")
public DaoFactory getFactory() {
return factory;
}
public Navegador getNavegador(){
return this.navegador;
}
//@Out(key="br.com.egvc.lojavirtual.modelo.Acesso")
public Acesso getAcesso(){
return this.acesso;
}
}
package br.com.egvc.lojavirtual.loja;
import java.io.IOException;
import org.vraptor.Interceptor;
import org.vraptor.LogicException;
import org.vraptor.LogicFlow;
import org.vraptor.annotations.In;
import org.vraptor.scope.ScopeType;
import org.vraptor.view.ViewException;
import br.com.egvc.lojavirtual.modelo.ClienteGrafica;
public class CanalInterceptor implements Interceptor{
@In(scope=ScopeType.SESSION,required=false)
private ClienteGrafica clienteGrafica;
public void intercept(LogicFlow flow) throws LogicException, ViewException {
// TODO Auto-generated method stub
if(this.clienteGrafica == null){
try{
flow.getLogicRequest().getResponse().sendRedirect("grafica.formCanalLogin.logic");
}catch(IOException e){
// Erro ao redirecionar URL
}
}else{
flow.execute();
}
}
}
vlew
o canalInterceptor está passando na logica: grafica.formCanalLogin.logic?
são só esses dois interceptors?
dá uma olhada no seu DaoInterceptor, que tá “um pouco” grande, se ele está chamando o flow.execute no caso em que deu erro
Ace
Outubro 5, 2011, 2:48pm
#14
Então cara, tenho outros interceptors mas são equivalentes a outras logicas que estão funcionando corretamente.
como eu verifico se o canalInterceptor esta passando na logica? desculpa sou novato, e mais ainda com vRaptor.
qdo preciso verificar algum erro de log, utilizo o putty svn, mas como este projeto esta em produção e tenho outros projetos rodando tbm fica impossivel de verificar, pois os log’s ficam rodando na tela… =\
** um detalhe importante é q ao tentar acesar ContextPath/grafica.formCanalLogin.logic parece q não executa nada fica na tela branca…
tenta reproduzir o erro na sua máquina… ficar testando em produção nunca é legal. se a resposta está em branco, algum interceptor não está mandando continuar, ou vc está com uma lógica @Viewless
Ace
Outubro 5, 2011, 3:21pm
#16
cara sem chance, estava tentando rodar esse projeto no meu eclipse Helios 404 direto…=
um problema atras do outro… não vai dar pra rodar local…
mas eu naum estou usando nada @Viewless
todos as classes e paginas utilizadas para rodar este projeto estão aqui neste topico, o que é mais estrenho é que este projeto estava funcionando, soh o simples fato de criar um novo metodo, e subi para o produção já era… voltei na forma q estava no inicio e nada de voltar…
desculpe, Ace, mas vc mandou muito código.
se vc não consegue rodar na sua máquina, só em produção, vc tem um problema bem maior do que esse que vc mandou aqui…
tenta rodar na sua máquina primeiro, depois reproduz o erro localmente e depois tenta descobrir o que está gerando o erro.
assim fica mais fácil da gente te ajudar
Ace
Outubro 5, 2011, 3:29pm
#18
Maravilha cara, vou tentar aki e assim que rodar ele localmente, abro novamente este topico…
vlw pela força…
Ace
Outubro 6, 2011, 12:56pm
#19
Lucas Cavalcanti,
Cara estou tentando rodar o projeto em meu localhost, e o seguinte erro ocorre
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.loja.DaoInterceptor()
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:81)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
org.vraptor.interceptor.InterceptorInstantiationException: Unable to instantiate using public br.com.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:38)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:94)
org.vraptor.core.DefaultController.execute(DefaultController.java:42)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
org.vraptor.component.ComponentInstantiationException: Unable to instantiate using public br.com.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:38)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:94)
org.vraptor.core.DefaultController.execute(DefaultController.java:42)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.reflect.InvocationTargetException
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
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:38)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:94)
org.vraptor.core.DefaultController.execute(DefaultController.java:42)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
org.hibernate.validator.ClassValidator.<clinit>(ClassValidator.java:53)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:382)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1319)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
br.com.util.HibernateUtil.getSession(HibernateUtil.java:15)
br.com.dao.DaoFactory.<init>(DaoFactory.java:17)
br.com.loja.DaoInterceptor.<init>(DaoInterceptor.java:32)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
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:38)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:94)
org.vraptor.core.DefaultController.execute(DefaultController.java:42)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
root cause
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
org.hibernate.validator.ClassValidator.<clinit>(ClassValidator.java:53)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:382)
org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1319)
org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
br.com.util.HibernateUtil.getSession(HibernateUtil.java:15)
br.com.dao.DaoFactory.<init>(DaoFactory.java:17)
br.com.loja.DaoInterceptor.<init>(DaoInterceptor.java:32)
sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
java.lang.reflect.Constructor.newInstance(Unknown Source)
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:38)
org.vraptor.core.InterceptorsLogicFlow.execute(InterceptorsLogicFlow.java:72)
org.vraptor.core.VRaptorExecution.execute(VRaptorExecution.java:94)
org.vraptor.core.DefaultController.execute(DefaultController.java:42)
org.vraptor.VRaptorServlet.service(VRaptorServlet.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.14 logs.
classNotFoundException é falta de jar.
geralmente é fácil saber qual jar tá faltando pelo pacote da classe… senão vc pode usar o jarfinder.com