2013-07-17 20 views
10

Ho un progetto semplice per testare i servizi JAX-RS. Ieri ho scaricato jersey-1.7.1 e utilizzato com.sun.jersey.api.container.httpserver.HttpServerFactory e com.sun.net.httpserver.HttpServer per creare un server http per testare i miei servizi dall'interno di Eclipse (w/OA pesante peso del contenitore)jersey e JAX-RS RI2 - mancanti HttpServerFactory

Oggi, ho scaricato l'ultima vasetti Jersey (jaxrs-ri) e la HttpServerFactory manca. Sembra che abbiano rimosso la classe tra 1.7.1 => 2.0 ma non riesco a trovarla nella sezione deprecata. Vedo le classi grizzly2 nella sezione API (forse è quello che dovrei usare ora) ma nessuno dei barattoli nel gruppo jaxrs-ri fornisce quelle classi. Ho scaricato il jar jersey-grizzly da 1.12 ma ha solo classi com/sun/jersey/server/impl/container/grizzly2/GrizzlyContainer e nessuna implementazione.

Così domanda di anime gentili

1 - con gli ultimi barattoli jaxrs-ri dalla pagina di download jersey, qual è il metodo consigliato per creare un semplice server HTTP per testare da linea di comando, se il modo in cui ha 1.7.1 stato deprecato. quali barattoli scaricare/includere e magari un esempio di codice corto?

2 - Tutta la documentazione intorno creazione di un servizio REST semplice utilizzando Java è un gran casino. Quindi, come trovi le informazioni giuste?

(In realtà, questo non è uno scherzo, forse questo richiederebbe un post sul blog separato - basta guardare il pasticcio, cambiato API, nessuna informazione su funzionalità deprecate, diffs di implementazione, ad esempio CXF vs jersey, API 1.x vs API 2.0, Glassfish contenitore v xy contro Tomcat, la versione x di y vs. versione x2 di y, servlet 3.0 avrebbe avuto questo file, stai estendere l'applicazione o no!)

Aggiornamento

lavoro ad esempio con il server 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); 

    } 
} 

risposta

9

È possibile utilizzare il JdkHttpServerFactory, che è disponibile nella jersey-container-jdk-http-2.0.jar:

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

Non c'è bisogno di chiamare server.start()!

+0

grazie. probabilmente questo è il percorso di minor resistenza. Ho aggiornato la domanda con un campione funzionante. – rjha94

+0

Sto provando questo ed eseguendo NoClassDefFoundError: com/google/common/base/Function in fase di esecuzione. – ash

+0

trovato qui, http://mirrors.ibiblio.org/pub/mirrors/maven2/com/google/collections/google-collections/0.9/google-collections-0.9.barattolo, ma quella sembra essere una tana di coniglio ... un'altra dipendenza mancante. Bah. – ash

2
+0

ciao @alexey, ci proverò. hai un esempio di codice per testare anche la maglia con il server grizzly embedded? – rjha94

+0

certo, ci sono molti esempi nello spazio di lavoro di Jersey, per esempio helloworld: https://github.com/jersey/jersey/tree/master/examples/helloworld – alexey

+0

scusa ma un'altra domanda, perché grizzyly-http-servlet-server , Servlet è necessario? Non posso semplicemente lavorare con il server http? Il servlet – rjha94

Problemi correlati