2013-07-17 1 views
10

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

Сегодня я загрузил последние майки 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-ри баночки из джерси загрузки страницы, что является рекомендуемым способом создать простой сервер HTTP для тестирования из командной строки, если 1.7.1 способ имеет устарели. какие банки загружать/включать и, возможно, образец короткого кода?

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

(Действительно, это не шутка. Возможно, для этого потребуется отдельное сообщение в блоге - просто посмотрите на беспорядок, измените API, нет информации об устаревших функциях, различиях в реализации, например CXF vs. jersey, API 1.x против API 2.0, Glassfish контейнера v х по сравнению с Tomcat, версия х г против версии х2 у, сервлет 3,0 будет иметь этот файл, вы простирающийся приложение или нет!)

Update

работает пример с сервером 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); 

    } 
} 

ответ

9

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

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

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

+0

спасибо. вероятно, это путь наименьшего сопротивления. Я обновил вопрос с помощью рабочего образца. – rjha94

+0

Я пытаюсь это сделать и работать в NoClassDefFoundError: com/google/common/base/Function во время выполнения. – ash

+0

нашел это здесь, http://mirrors.ibiblio.org/pub/mirrors/maven2/com/google/collections/google-collections/0.9/google-collections-0.9.jar, но это, кажется, кроличья дыра ... другая отсутствует зависимость. Ба. – ash

2
+0

привет @alexey, я попробую это. у вас есть образец кода для тестирования трикотажа с встроенным сервером гризли? – rjha94

+0

уверен, что в рабочем месте Джерси есть много образцов, например helloworld: https://github.com/jersey/jersey/tree/master/examples/helloworld – alexey

+0

извините, но еще один вопрос, почему grizzyly-http-servlet-server , необходим сервлет? Могу ли я не просто работать с http-сервером? – rjha94

Смежные вопросы