2013-08-02 2 views
5

저의 저지 리소스와 대화하기 위해 임베디드 부티크를 구성하려고하지만이를 수행하는 방법을 이해할 수 없습니다. 나는 여러 가지 다른 것들을 시도했지만 아무것도 작동하는 것 같지 않습니다. 부두 튜토리얼은 Jersey와 함께하는 법을 실제로 다루지 않습니다. 모든 코드 제안이나 링크가 크게저지 리소스에 액세스하려면 임베디드 부두를 구성하는 방법은 무엇입니까?

를 부탁드립니다

편집 :이 클래스에 연결을 시도

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

:

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

어떤 커플을 시도하셨습니까? –

답변

9

당신은 함께 코드에서 뉴저지의 두 버전을 혼합하고 -에서 ServletContainer Jersey 2.x (패키지 org.glassfish.jersey.*) 및 Jersey 1.x의 속성 (패키지/접두어 com.sun.jersey.*).

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

main 방법에서 저지 2.X 변화에게이 두 줄

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

를 사용하여 응용 프로그램을 배포하고 기타를 확인하려면 ServerProperties 당신이 유용 할 수 있습니다.

+0

나는 어제 이것을 실제로 깨달았고 일광 포장으로 갈아 입히고 고정시켰다. 그럼에도 불구하고 응답 해 주셔서 감사합니다. – sreya