jersey и jax-rs RI2 - отсутствует HttpServerFactory

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

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

Так что вопрос к добрым душам

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

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

(На самом деле, это не шутка. Возможно, для этого потребуется отдельный пост в блоге — просто посмотрите на беспорядок, измененный API, отсутствие информации об устаревших функциях, различия в реализации, например, CXF против трикотажа, API 1.x против API 2.0, Контейнер Glassfish v xy против Tomcat, версия x из y против версии x2 из 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);

    }
}

person rjha94    schedule 17.07.2013    source источник


Ответы (3)


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

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

Нет необходимости вызывать server.start()!

person stck0177    schedule 18.07.2013
comment
благодаря. наверное это путь наименьшего сопротивления. Я обновил вопрос рабочим образцом. - person rjha94; 18.07.2013
comment
Я пытаюсь это сделать и сталкиваюсь с NoClassDefFoundError: com/google/common/base/Function во время выполнения. - person ash; 19.04.2014
comment
нашел его здесь, mirrors.ibiblio.org/pub/mirrors/maven2/com/google/collections/, но это похоже на кроличью нору... еще одна отсутствующая зависимость. Бах. - person ash; 19.04.2014

Пожалуйста, попробуйте этот пакет Grizzly 2 http://search.maven.org/remotecontent?filepath=org/glassfish/grizzly/grizzly-http-servlet-server/2.3.3/grizzly-http-servlet-server-2.3.3.jar

person alexey    schedule 17.07.2013
comment
привет @alexey, я попробую это. у вас есть пример кода для тестирования трикотажа со встроенным сервером гризли? - person rjha94; 18.07.2013
comment
Конечно, в рабочей области Джерси есть множество примеров, например helloworld: github.com /джерси/джерси/дерево/мастер/примеры/helloworld - person alexey; 18.07.2013
comment
извините, но еще один вопрос, зачем гризли-http-servlet-server, нужен ли сервлет? Может я не просто работаю с http сервером? - person rjha94; 18.07.2013
comment
сервлет не нужен, просто хотел быть в безопасности на случай, если он вам понадобится. Вот простой пакет https-сервера: search.maven.org/remotecontent?filepath=org/glassfish/grizzly/ - person alexey; 18.07.2013

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

person sherebry    schedule 06.03.2014