Джерси и 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()!
Ответ 2
Попробуйте этот комплект 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
Ответ 3
Вы также можете получить комплект отсюда
http://mvnrepository.com/artifact/com.sun.jersey/jersey-server/1.2
Просто добавьте его в папку с библиотекой, затем щелкните правой кнопкой мыши по нему в проекте и выберите "Добавить как библиотеку".