Служба трассы Джерси Grizzly не видна вне локального хоста - программирование
Подтвердить что ты не робот

Служба трассы Джерси Grizzly не видна вне локального хоста

Я пытаюсь написать службу REST в java, используя Джерси и Glassfish Grizzly. У меня очень простой случай, работающий внутри, но не могу вызвать вызов на сервере с внешнего адреса. Я пробовал использовать различные пары компьютеров с видимыми извне IP-адресами и попытался указать фактический IP-адрес на сервере вместо localhost, но ничего не работает. Я несколько слабо следую за официальным руководством пользователя здесь. Мой ресурс:

package resources;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/simpleREST")
public class SimpleRESTResource
{
    @GET
    @Produces("text/plain")
    public String getMessage()
    {
        return "Message from server\n";
    }
}

И сервер:

import java.io.IOException;
import java.net.URI;

import javax.ws.rs.core.UriBuilder;

import org.glassfish.grizzly.http.server.HttpServer;

import com.sun.jersey.api.container.grizzly2.GrizzlyServerFactory;
import com.sun.jersey.api.core.PackagesResourceConfig;
import com.sun.jersey.api.core.ResourceConfig;


public class Main
{
    public static final URI BASE_URI = UriBuilder.fromUri("http://localhost").port(9998).build();

    public static void main(String[] args) throws IOException
    {
        System.out.println("Starting grizzly...");
        ResourceConfig rc = new PackagesResourceConfig("resources");
        HttpServer myServer = GrizzlyServerFactory.createHttpServer(BASE_URI, rc);
        System.out.println(String.format("Jersey app started with WADL available at %s/application.wadl\n" +
                "Try out %s/simpleREST\nHit enter to stop it...", BASE_URI, BASE_URI));
        System.in.read();
        myServer.stop();
    }
}

На том же компьютере я могу успешно взаимодействовать с сервером, используя

curl -X GET localhost:9998/simpleREST

ИЛИ

curl -X GET [external numeric address]:9998/simpleREST

Большое спасибо за любые предложения.


Решение

Я исправил эту проблему, установив URI сервера в http://0.0.0.0:9998 вместо localhost, 127.0.0.1 или фактического адреса.

4b9b3361