2013-08-02 10 views
5

私はJerseyのリソースと対話するために埋め込まれたjettyを設定しようとしていますが、どうやってそれを行うのか分かりません。私はいくつかのことを試しましたが、何も動かないようです。桟橋のチュートリアルでは、Jerseyとのやり方を実際には扱っていません。任意のコードの提案やリンクが大幅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); 
     } 

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

あなたが一緒にあなたのコード内でジャージーの2つのバージョンを混合している - からServletContainer Jersey 2.x(パッケージorg.glassfish.jersey.*)およびJersey 1.xのプロパティ(パッケージ/プレフィックスcom.sun.jersey.*)。

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

にごmain方法から次の2行

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

を変更し、あなたが役に立つかもしれServerProperties他にチェックジャージー2.xのを使用してアプリケーションをデプロイするに

+0

私は実際にこれを実現し、グラスフィッシュを太陽のパッケージに切り替え、それを修正しました。それにもかかわらず、応答に感謝 – sreya

関連する問題