GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

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

Tags: #<Tag:0x00007f0baafb47a0> #<Tag:0x00007f0baafb4598>

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.

@Abner_Rodrigues

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

@Abner_Rodrigues
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?

Olha, em JavaEE sou bem ignorante kkkkk, quando se trata de web eu tenho menos complicação com PHP. Então resumindo, eu sei o básico do básico do JavaEE

Entendido, essa biblioteca que você está usando em Java sempre me deu dor de cabeça para configurar, se tiver necessidade de fazer Java mesmo eu posso te ajudar a construir com Spring se não tiver nenhum problema pra você é claro.

Quando eu tinha problemas na configuração do jeito que você está tendo eu apagava todo o projeto e escrevia novamente e na maioria das vezes rodava, mesmo não tendo mudado nada.

Se quiser ajuda com Spring me passa um e-mail com cel e a gente vai conversando por lá. tiagoadmstz@yahoo.com.br

1 Curtida

Se ta no início do projeto vale mais jogar fora e mudar pra spring boot. E se for uma aplicação média, PHP seria mil vezes mais prático.

Estamos no inicio sim, pois é, se tratando de web o PHP facilita bastante. Na primeira tentativa o wservice já funcionou

Se PHP atende é perda tempo manter em Java, que é bem mais custoso, tanto em desenvolvimento quanto em infra.

1 Curtida

tenta tirar a barra no Path

assim:

@Path("")
public class QualquerCoisa

Eu deixava sem, na verdade só funcionava sem a /, fazendo isso localmente funcionava tranquilo, mas online não funcionava de jeito nenhum. Minha solução foi trocar pro PHP mesmo.

Como é chatinho encontrar isso (ainda mais em postgresql), vou postar o código:

arquivo: get_all.php

<?php
header('Content-Type: application/json');

require_once('db.php');

$SQL = 'SELECT * FROM suatabela ORDER BY id';

$statement = $connection->prepare($SQL);
$statement->execute();
$menu = $statement->fetchAll(PDO::FETCH_OBJ);

$data = array();

foreach ($menu as $item) {
    //$data[] = $item; //print_all
    $data['coluna_0'] = $item->nome_da_coluna;
    $data['coluna_1'] = $item->nome_da_coluna;
    $data['coluna_2'] = $item->nome_da_coluna;
    $data['coluna_3'] = $item->nome_da_coluna;
    $data['coluna_4'] = $item->nome_da_coluna;
    $data['coluna_5'] = $item->nome_da_coluna;
}

$final = json_encode(['nome_da_colecao' => $data]);
echo $final;

db.php

<?php
$dsn = 'pgsql:host=localhost;dbname=banco';
$username = 'user';
$password = 'senha';
$options = [];
try {
$connection = new PDO($dsn, $username, $password, $options);
} catch (PDOException $e) {
echo $e;
}

Output:

{"nome_da_colecao":{"coluna_0":1,"coluna_1":"Alguma Coisa","coluna_2":"Alguma Coisa","coluna_3":"Alguma Coisa","coluna_4":"Alguma Coisa","coluna_5":"Alguma Coisa"}}

Boa decisão. Se for o caso pode simplificar mais o script retornando json direto pelo PDO: https://stackoverflow.com/questions/2770273/pdostatement-to-json

1 Curtida

Boa!