Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Rest no Tomcat recebendo só 404

Tenho um projeto já relativamente grande usando JSF e resolvi agora fazer um web service REST. Tudo parece OK, fiz as configurações do web.xml, a classe com o método anotado @GET e etc, mas a resposta que tenho é 404, página não encontrada. No console do Eclipse não acontece absolutamente nada, é como se a requisição não tivesse sido recebida. (mas deve estar sendo, pois o resto do projeto continua funcionando normalmente). Mando abaixo parte do web.xml e o código da classe de teste que fiz para o WS.

<servlet>
        <servlet-name>Jersey REST Service</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
            <param-name>jersey.config.server.provider.packages</param-name>
            <param-value>WS</param-value>

        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Jersey REST Service</servlet-name>
        <url-pattern>/WS/*</url-pattern>
    </servlet-mapping>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.xhtml</url-pattern>
    </servlet-mapping>


package WS;


import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;





@Path("WS")
public class WSTest{


    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String buscaUsuario(){
        return "bla bla";
    }


    @POST
    public void pegaUsuario(String conteudo){

    }




}
5 respostas

Não manjo especificamente do jersey, mas parece que a configuração está correta. Qual o endereço que vc está tentando acessar? /ws/ws?

Tentei usar os endereços: localhost/nomedoprojeto/WS e localhost/nomedoprojeto/WS/

Lembrando que o endereço localhost/nomedoprojeto/login.xhtml funciona normalmente.

então, pela sua configuração deveria /ws/ws. Já que vc mapeou que o jersey responde para ws/*.

Depois de sua resposta eu testei o /WS/WS também, mas ainda assim continua dado 404. O que mais pode estar dando errado? Como eu disse, o resto da aplicação funciona, todas as páginas .xhtml são respondidas pelo Tomcat e o JSF está funcionando perfeitamente. Há alguma maneira de rastrear o que acontece com a solicitação dentro do Tomcat?

solução!

Alberto, obrigado pela ajuda, descobri o problema. Dos 21 jars que eu devia ter instalado, faltava 1.

Só descobri depois de tentar tudo do zero a partir de um projeto novo.