2013-08-02 11 views
5

Próbuję skonfigurować wbudowany pomost, aby porozmawiać z moimi zasobami w Jersey, ale nie mogę wymyślić, jak to zrobić. Próbowałem kilku różnych rzeczy, ale nic nie działa. Samouczki pomostowe nie radzą sobie z tym, jak to zrobić z Jersey. Wszelkie sugestie kod lub linki są cenioneJak skonfigurować wbudowany pomost, aby uzyskać dostęp do zasobów Jersey?

EDIT:

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); 
     } 

Próbuje połączyć się z tej klasy:

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

Którą parę rzeczy próbowaliście? –

Odpowiedz

9

Ty mieszania 2 wersje Jersey w kodzie razem - ServletContainer od Jersey 2.x (pakiet org.glassfish.jersey.*) i właściwości z Jersey 1.x (pakiet/prefiks com.sun.jersey.*).

Aby wdrożyć aplikację za pomocą Jersey Zmienić 2.x te dwie linie

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

od wybranej metody main do

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

i sprawdzić inne ServerProperties mogą okazać się przydatne.

+0

Rzeczywiście zdałem sobie z tego sprawę wczoraj i zamieniłem glassfish na pakiet słoneczny i naprawiłem go. Dzięki za odpowiedź – sreya

Powiązane problemy