HTTP 404 - WebService não inicia em produção

Fala pessoal!! Tudo certo? Então, tô com um sério problema aqui, meu webservice roda normal em localhost, mas quando eu jogo no domínio ele não vai!!

Olha os prints:

image

Meu ApplicationConfig:

@javax.ws.rs.ApplicationPath("api")
public class ApplicationConfig extends Application { 

Minha classe do WebService

@Path("")
public class ws {
       @GET
    @Produces("application/json")
    @Path("user/list")
    public String list_user() {
        List<User> list;

        UsersDAO dao = new UsersDAO();
        list = dao.listar();

        Gson g = new Gson();
        return g.toJson(list);
    }
}

EDIT: No log do servidor também não acusa nenhum erro, o estranho é que quando eu acesso o index.html, do projeto (ONLINE), ele mostra o index

image

@rodriguesabner
Fala dev, blz? Acho q o seu problema está na definição da sua rota…eu faria assim

 @Path("/")
 public class ws{
          @GET  
          @Produces("application/json")
          @Path("user/list")
          public String list_user(){
                List<User> list;
                
                UsersDAO dao = new UsersDAO();
                list = dao.listar();

                Gson g = new Gson();
               return g.toJson(list);
      }
}

Espero que ajude, boa sorte.

Opa Villagram, quanto tempo, assim que eu chegar em casa eu faço o teste. Sabe explicar se isso realmente causa alguma interferência? Eu consigo rodar localmente o Webservice

Realmente faz muito tempo…hehehehe…existem outras coisas que podem interferir em produção, mas como a rota não está sendo encontrada no contexto…acho q é isso.

Eu uso Spring para construir minhas aplicações Rest então eu realmente estou chutando forte…hehehehehe. Precisaria ver os logs do Tomcat para ter certeza.

Pior que o log não acusa nada, fala que fez o deploy e simplesmente não roda, mas é uma boa opção, até porque do jeito que está “sem path”, então o encontra o Index, mas não encontra o que vem depois. Vou tentar!! Valeu mesmo

como está o mapeamento no web.xml?

tente:
@Path("/user/list")

Já testo!!!

Boa noite!!

Então, fiz as mudanças que vocês indicaram, mas continua o mesmo, fui olhar meus endpoints no Localhost e ficou meio bugado

image

@Path("/")
public class ws {

    @Context
    private UriInfo context;

    public ws() {
    } 
}

 @GET
    @Produces("application/json")
    @Path("/user/list")
    public String list_user() {
        List<User> list;

        UsersDAO dao = new UsersDAO();
        list = dao.listar();

        Gson g = new Gson();
        return g.toJson(list);
    }

Olhei o meu .log e só fala e está tudo normal:

2019-09-10 20:52:51,919 [localhost-startStop-1] INFO  org.apache.catalina.startup.HostConfig- Deployment of web application directory [/opt/web/webapps/.old] has finished in [105] ms
2019-09-10 20:52:52,010 [main] INFO  org.apache.coyote.http11.Http11NioProtocol- Starting ProtocolHandler ["http-nio-8080"]
2019-09-10 20:52:52,030 [main] INFO  org.apache.catalina.startup.Catalina- Server startup in 2102 ms

Boa noite amigo…

Só coloque a barra no @Path da classe ou no método…é por isso que ficou bugado. hehehehe.

Acho q só isso já resolve.

Nada, o problema é no Path mesmo! Olha:

@Path("/")
public class ws {}

@GET
@Produces("application/json")
@Path("user/list")
public String list_user() {}

image

Então melhor tirar o @Path da classe por completo e deixar só o do método…

Eu já fiz isso bro, mas dá o mesmo erro. Online ele não acha o path, mas offline fica normal

Essa aplicação foi toda construida por você ou tem mais pessoas envolvidas? O que parece é que o serviço não está sendo exposto no contexto.

Só por mim, então, quando eu abro o Index do projeto ele mostra normal, mas quando é pra setar algum path ele não encontra, como se estivesse errado. Creio que se o problema fosse no servidor, o Index nem iniciava

Vi aqui que você está utilizando o IIS para publicar a API provavelmente é alguma configuração nele que está impedindo de ir além do root.

@rodriguesabner

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
        <handlers>
            <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
            <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode,runtimeVersionv4.0" />
        </handlers>
</system.webServer>

@rodriguesabner
Acabei de pensar em algo aqui…tem dados para retornar nesse serviço??

Já testo esse código, e sobre os dados, sim, já tô alimentando. Eu tô fazendo um app e já tenho que fazer alguns testes de como vai ficar

IIS não é .NET? Eu tentei jogar o código que você mandou acima no web.xml, mas não tive sucesso. Troquei do hospedagem pra ver se era um problema deles, mas o erro continua. Eu usei Java pra gerar o serviço. Com certeza é erro de configuração (só não sei qual), eu fiz um teste com o php e consegui rodar tranquilo no servidor online.

Você precisa usar assim não pode utilizar um framework como o Spring?