Erro 404 VRaptor3

25 respostas
G

eai pessoal sou novo por aqui...

estou com um problema de configuraçao no VRaptor 3, estou tentando fazer alguns testes mais esta dando erro.

irei postar os codigos ..

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app id="WebApp_ID" version="2.4"
	xmlns="http://java.sun.com/xml/ns/j2ee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

	<display-name>teste-vraptor</display-name>

	<context-param>
		<param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
		<param-value>messages</param-value>
	</context-param>
	
	<context-param>
        <param-name>br.com.caelum.vraptor.packages</param-name>
        <param-value>br.com.teste</param-value>
    </context-param>
    
    <filter>
	    <filter-name>vraptor</filter-name>
	    <filter-class>br.com.caelum.vraptor.VRaptor</filter-class>
	</filter>

	<filter-mapping>
	    <filter-name>vraptor</filter-name>
	    <url-pattern>/*</url-pattern>
	</filter-mapping>
	
</web-app>
@Resource
public class ProdutoController {

//...


	public void form() {
	}


	@Path("/produtos")
	@Post
	public void adiciona(Produto produto) {
		Session session = HibernateUtil.currentSession();
		GenericHibernateDao<Produto, Serializable> dao = new GenericHibernateDao<Produto, Serializable>(
				session, Produto.class) {
		};
		dao.save(this.produto);
		
	}
<%@ taglib uri="http://waffle.codehaus.org" prefix="w" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
	
	<w:form action="<c:url value="/produtos/adiciona"/>">
		<head>
			<fmt:message key="cadastroDeProdutos"/>
		</head>
		
		<body>
		
			<w:text name="produto.nome" label="nome"/>
			<w:text name="produto.descricao" label="descricao"/>	
			
			<w:submit value="enviar" />
		
		</body>
		
	</w:form>
		
</html>

25 Respostas

G

Mas… e qual é o erro? Você pode nos descrever melhor? Há alguma mensagem? Algum stack trace?

G

Pelo pouco que entendi vocẽ está fazendo o @Path errado. Quando você usa @Path("/xxx") o acesso a url fica /xxx. Ou seja, vocẽ está usando /produtos/adiciona, o correto seria apenas /produtos, já que sua anotação está como @Path("/produtos").

@Get e @Post indicam que aquele url será tratado apenas como Get ou Post. Caso vocẽ não coloque nenhum o método será chamado tanto em GET como POST.

Outra coisa, você não colocou o @Path no método form. Não sei como o vraptor trata isso, mas eu sempre coloco @Path em todos os métodos que serão expostos como url. Sugiro vocẽ ler de novo a documentação sobre o Path e postar mais duvidas aqui no guj.

Abraços.

http://vraptor.caelum.com.br/documentacao/resources-rest/

G

mais entao segundo a documentação

Temos uma listagem de Produtos, mas ainda não temos como cadastrá-los. Vamos então criar um formulário de adição de produtos. Para não ter que acessar o jsp diretamente, vamos criar uma lógica vazia que só redireciona pro jsp:

@Resource
public class ProdutosController {
    //...
    public void form() {
    }
}

Podemos acessar o formulário pela URI /produtos/form, e o formulário estará em /WEB-INF/jsp/produtos/form.jsp:

<form action="<c:url value="/produtos/adiciona"/>">
    Nome:             <input type="text" name="produto.nome" /><br/>
    Descrição:    <input type="text" name="produto.descricao" /><br/>
    Preço:            <input type="text" name="produto.preco" /><br/>
    <input type="submit" value="Salvar" />
</form>

O formulário vai salvar o Produto pela URI /produtos/adiciona, então precisamos criar esse método no nosso controller:

@Resource
public class ProdutosController {
    //...
    public void adiciona() {
    }
}
G

Só que no seu código está:

@Path("/produtos") @Post public void adiciona(Produto produto) {

Ou seja, /produto/adiciona não será encontrado.

Então você não deve colocar @Path em nenhum método, assim será usado o nome do controler sem o sufixo controller + nome do método. Caso vocẽ colocar o @Path a convenção padrão é sobrescrita.

G

agora deixei
no jsp

<form action="/produto" method="post">

no controller

@Path(/produtos)
@Post

mais msm assim da erro
=/

G

Gustavo, para que possamos ajudar vocẽ precisa dizer QUAL erro está dando, mostrar as mensagens, stacktrace…

G

eu digito o endereço e da erro HTTP Status 404

nao sei si o erro é de configuraçao ou do codigo

G

Lembre-se que no atributo form da action você tem que colocar o contexto da aplicação caso vocẽ não estiver usando a aplicação no raíz.

Paulo_Silveira

gustavo, modifique o log4j.xml para logar todo o vraptor em debug e posta pra gente a inicializacao da sua webapp

Regis_A_Rocha

eai galera to com um problema parecido com esse tbm esta dando um erro 404 …

vo tentar fazer isso no log4j assim como o paulo falou

Regis_A_Rocha

30/09/2009 23:04:33 org.apache.catalina.core.AprLifecycleListener init
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Arquivos de programas\Java\jre1.6.0_07\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Arquivos de programas/Java/jre1.6.0_07/bin/client;C:/Arquivos de programas/Java/jre1.6.0_07/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
30/09/2009 23:04:33 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
30/09/2009 23:04:33 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1254 ms
30/09/2009 23:04:33 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
30/09/2009 23:04:33 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
30/09/2009 23:04:34 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
30/09/2009 23:04:34 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
30/09/2009 23:04:34 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/94 config=null
30/09/2009 23:04:34 org.apache.catalina.startup.Catalina start
INFO: Server startup in 1029 ms

na hora de iniciar o tomcat aparece isso

na hora iniciar a app nao aparece nada no console

Paulo_Silveira

oi regis

existe a chance da sua app nao ter sido configurada? pois ai nao esta indicando nem que a webapp esta subindo, muito menos vraptor!

Regis_A_Rocha

realmente percebi isso quando estava subindo aquele exemplo do vraptor-mydvds, aparece varias coisas do vraptor no console.

Paulo coloquei no classPath todos os jars. necessarios …

sem ver a app. achu dificil neh, mais assim tem em mente onde estaria o erro de configuraçao.

G

Uma coisa que deve ser verificada, conforme o Silveira falou, é verificar se a aplicação está mesmo up.

Pelo que noto vocês dois estão usando tomcat. Verifiquem se no diretório webapps dentro do tomcat há um diretório da aplicação de vocês. Se vocês estão usando o tomcat standalone é necessário colocar o war dentro do TOMCAT_HOME/webapps (esse é o padrão).

Uma sugestão é colocar um arquivo HTML qualquer dentro da aplicação, fazer o deploy e ver se esse HTML aparece. Caso ele não ser exibido o contexto todo não subiu. Caso sim, a app está ok, porém o vraptor não. Então é bom verificar se o web.xml está configurando para o filter do vraptor.

Tentem postar aqui a maior quantidade de informações possíveis, assim facilita para ajudar. De preferencia enviar se vocês estão fazendo deploy standalone, via netbeans ou eclipse, mostrar os logs, algum eventual stack-trace, e mensagens no browser.

Abraços

Lucas_Cavalcanti

@gustavo mendes:
se você NÃO coloca o @Path no método, ele vai usar a convenção: /<nome_do_controller>/<nome_do_metodo>
se você coloca o @Path ele sobrescreve a convenção… e pra acessar o método tem que usar a mesma url que está dentro do @Path

@Regis:
provavelmente você está com o content root setado errado…
ele deve estar setado pra pasta que contém o WEB-INF:

sua_aplicacao/
    + ....
         +  o_content_root/
                + WEB-INF/
                      -  lib/
                      -  web.xml
Regis_A_Rocha

vlw cara … hoje a tarde vo dar uma olhada melhor, ai posta mais duvidas caso nao consiga resolver

Regis_A_Rocha

comecei fazer a app de novo

fiz uma pagina de teste, nenhum codigo java ainda…

na hora de subir o tomcat

01/10/2009 20:59:15 org.apache.catalina.core.AprLifecycleListener init
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Arquivos de programas\Java\jre1.6.0_07\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Arquivos de programas/Java/jre1.6.0_07/bin/client;C:/Arquivos de programas/Java/jre1.6.0_07/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
01/10/2009 20:59:15 org.apache.coyote.http11.Http11Protocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
01/10/2009 20:59:15 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 868 ms
01/10/2009 20:59:15 org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
01/10/2009 20:59:15 org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.14
01/10/2009 20:59:16 org.apache.catalina.loader.WebappClassLoader validateJarFile
INFO: validateJarFile(C:\Documents and Settings\Regis\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\sgeweb\WEB-INF\lib\servlet-api-2.5.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
SLF4J: This version of SLF4J requires log4j version 1.2.12 or later. See also http://www.slf4j.org/codes.html#log4j_version
01/10/2009 20:59:18 org.apache.coyote.http11.Http11Protocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
01/10/2009 20:59:18 org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
01/10/2009 20:59:18 org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/94  config=null
01/10/2009 20:59:18 org.apache.catalina.startup.Catalina start
INFO: Server startup in 2697 ms

qdo vo abrir a pagina

01/10/2009 21:00:38 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet jsp threw exception
java.lang.NullPointerException
	at org.apache.jsp.jsp.teste_jsp._jspInit(teste_jsp.java:22)
	at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)
	at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:90)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)
G

Regis, dê uma olhada no thread na qual eu ajudei um outro colega com esse problema: http://guj.com.br/posts/list/139540.java

Regis_A_Rocha

opa vou dar uma olhada la …

vlw

Regis_A_Rocha

fiz isso ai q vc passou,

mais msm assim continua o msm problema

=/ .

G

Você já nos passou dois problemas, qual deles? É muito importante passar as mensagens de erro, e tudo mais.

Regis_A_Rocha

o erro q continua é esse

1. 01/10/2009 21:00:38 org.apache.catalina.core.StandardWrapperValve invoke  
   2. SEVERE: Servlet.service() for servlet jsp threw exception  
   3. java.lang.NullPointerException  
   4.     at org.apache.jsp.jsp.teste_jsp._jspInit(teste_jsp.java:22)  
   5.     at org.apache.jasper.runtime.HttpJspBase.init(HttpJspBase.java:52)  
   6.     at org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:159)  
   7.     at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:329)  
   8.     at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)  
   9.     at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)  
  10.     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)  
  11.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)  
  12.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)  
  13.     at br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:56)  
  14.     at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:90)  
  15.     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)  
  16.     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)  
  17.     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)  
  18.     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)  
  19.     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)  
  20.     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)  
  21.     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)  
  22.     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)  
  23.     at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)  
  24.     at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)  
  25.     at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)  
  26.     at java.lang.Thread.run(Unknown Source)

mais eu vou tentar refazer a app de novo desde o começo…

G

Posta o conteúdo do JSP.

Regis_A_Rocha
<html>
     <head>
        <h1>TESTE</h1>
     </head>
</html>

fiz só pra testar msm

G

Será necessário uma investigação. Aqui tem um null-pointer no teu jsp.

java.lang.NullPointerException
at org.apache.jsp.jsp.teste_jsp._jspInit(teste_jsp.java:22)

Criado 30 de setembro de 2009
Ultima resposta 1 de out. de 2009
Respostas 25
Participantes 5