Джерси и jax-rs RI2 - отсутствует HttpServerFactory

У меня есть простой проект для тестирования сервисов JAX-RS. Вчера я загрузил jersey-1.7.1 и использовал com.sun.jersey.api.container.httpserver.HttpServerFactory и com.sun.net.httpserver.HttpServer для создания http-сервера для тестирования моих сервисов изнутри eclipse (без тяжелого весовой контейнер)

Сегодня я загрузил последние майки jerseys (jaxrs-ri) и HttpServerFactory отсутствует. Похоже, что они удалили класс между 1.7.1 = > 2.0, но я не могу найти его в устаревшем разделе. Я вижу классы grizzly2 в разделе API (возможно, это то, что я должен использовать сейчас), но ни один из jars в jaxrs-ri bundle не предоставляет эти классы. Я загрузил jersey-grizzly 1.12 jar, но у него есть классы com/sun/jersey/server/impl/container/grizzly2/GrizzlyContainer и нет реализации.

Итак, вопрос добрым душам

1 - с последними jaxrs-ri jars с страницы загрузки jersey, что является рекомендуемым способом создания простого HTTP-сервера для тестирования из командной строки, если способ 1.7.1 устарел. какие банки загружать/включать и, возможно, образец короткого кода?

2 - Вся документация вокруг создания простой службы REST с использованием java - большой беспорядок. Итак, как вы находите правильную информацию?

(На самом деле это не шутка. Возможно, для этого потребуется отдельная запись в блоге - просто посмотрите на беспорядок, измените API, нет информации об устаревших функциях, различиях в реализации, например CXF vs. jersey, API 1.x vs API 2.0, контейнер Glassfish v xy против Tomcat, версия x of y vs. version x2 of y, сервлет 3.0 будет иметь этот файл, вы распространяете приложение или нет!)

Обновление

рабочий пример с сервером JDKHttp

package test.jersey;

import java.net.URI;
import com.sun.net.httpserver.HttpServer;
import org.glassfish.jersey.jdkhttp.JdkHttpServerFactory ;
import org.glassfish.jersey.server.ResourceConfig;

public class ConsoleServerV2 {

    static final String BASE_URI = "http://localhost:9099/";

    public static void main(String[] args) throws Exception {
        HttpServer server = null ;

        ResourceConfig rc = new ResourceConfig(rest.Service.class);
        URI endpoint = new URI(BASE_URI);

        server = JdkHttpServerFactory.createHttpServer(endpoint,rc);
        System.out.println("console v2.0 : Press Enter to stop the server. ");
        System.in.read();
        server.stop(0);

    }
}

Ответ 1

Вы можете использовать JdkHttpServerFactory, который доступен в jersey-container-jdk-http-2.0.jar:

ResourceConfig rc = new ResourceConfig(HelloWorldResource.class);
HttpServer server = JdkHttpServerFactory.createHttpServer(baseUri, rc);

Не нужно вызывать server.start()!

Ответ 3

Вы также можете получить комплект отсюда http://mvnrepository.com/artifact/com.sun.jersey/jersey-server/1.2 Просто добавьте его в папку с библиотекой, затем щелкните правой кнопкой мыши по нему в проекте и выберите "Добавить как библиотеку".