2013-08-02 9 views
5

Ich versuche, Embedded Jetty zu konfigurieren, um mit meinen Jersey Ressourcen zu sprechen, aber ich kann nicht herausfinden, wie es geht. Ich habe ein paar verschiedene Dinge ausprobiert, aber nichts scheint zu funktionieren. Die Anlegestellen Tutorials nicht wirklich, wie es mit Jersey zu tun. Jeder Code Anregungen oder Links sind starkWie konfiguriere ich einen eingebetteten Jetty, um auf Jersey-Ressourcen zuzugreifen?

EDIT geschätzt:

package pojo; 

import org.eclipse.jetty.server.Server; 
import org.eclipse.jetty.servlet.DefaultServlet; 
import org.eclipse.jetty.servlet.ServletContextHandler; 
import org.eclipse.jetty.servlet.ServletHolder; 
import org.glassfish.jersey.servlet.ServletContainer; 

public class Main { 

    public static void main(String[] args) throws Exception { 
     Server server = new Server(8112); 
     ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS); 
     context.setContextPath("/"); 
     server.setHandler(context); 
     ServletHolder h = new ServletHolder(new ServletContainer()); 
     h.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig"); 
     h.setInitParameter("com.sun.jersey.config.property.packages", "resources"); 
     h.setInitOrder(1); 
     context.addServlet(h, "/*"); 
     try 
     { 
      server.start(); 
      server.join(); 
     } 
     catch (Throwable t) 
     { 
      t.printStackTrace(System.err); 
     } 

Der Versuch, diese Klasse zu verbinden:

package resources; 


import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 
import javax.ws.rs.PathParam; 
import javax.ws.rs.core.Context; 
import javax.ws.rs.core.Request; 
import javax.ws.rs.core.UriInfo; 

import com.codahale.metrics.MetricRegistry; 
import com.codahale.metrics.Timer; 


import java.util.ArrayList; 
import java.util.List; 

import pojo.Party; 

@Path("/parties") 
public class AllPartiesResource { 

    @Context 
    UriInfo url; 

    @Context 
    Request request; 

    String name; 

    public static final Timer allTime = DBConnection.registry.timer(MetricRegistry.name("Timer","all-parties")); 

    @GET 
    @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML}) 
    public List<Party> getAllParties() throws Exception 
    { 
     final Timer.Context context=allTime.time(); //start the timer 
     List<Party> list = new ArrayList<Party>(); 
     DBConnection.readAllData(); 
     list.addAll(DBConnection.getPartyCollection().values()); 
     context.stop(); //stops timer 
     return list; 

//  ---> code for Jackson 
//  String string; 
//  DBConnection.readAllData(); 
//  ObjectMapper jsonMapper = new ObjectMapper(); 
//  string=jsonMapper.writeValueAsString(DBConnection.getPartyCollection()); 
//  return string; 
    } 

    @GET 
    @Path("count") 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getPartyCount() throws Exception 
    { 
     DBConnection.readAllData(); 
     return String.valueOf(DBConnection.getPartyCollection().size()); 
    } 

    @Path("{party}") //points to OnePartyResource.class 
    public OnePartyResource getParty(@PathParam("party")String party) 
    { 
     name = party; 
     return new OnePartyResource(url,request,party); 
    } 
} 
+1

Welches Paar hast du probiert? –

Antwort

9

Sie Mischen von 2 Versionen von Jersey in Ihrem Code zusammen - ServletContainer aus Jersey 2.x (Paket org.glassfish.jersey.*) und Eigenschaften von Jersey 1.x (Paket/Präfix com.sun.jersey.*).

Zur Bereitstellung der App diese beiden Zeilen

h.setInitParameter("com.sun.jersey.config.property.resourceConfigClass", "com.sun.jersey.api.core.PackagesResourceConfig"); 
h.setInitParameter("com.sun.jersey.config.property.packages", "resources"); 

von Ihrem main Methode

h.setInitParameter(ServerProperties.PROVIDER_PACKAGES, "resources"); 

Jersey 2.x ändern und überprüfen Sie die anderen ServerProperties Sie nützlich sein können.

+0

Das habe ich gestern tatsächlich realisiert und den Glasfisch auf ein Sonnenpaket umgestellt und es repariert. Danke für die Antwort trotzdem – sreya

Verwandte Themen