2013-07-23 56 views
2

我正在嘗試設置一個簡單的REST Web應用程序,該應用程序使用Jersey。在文檔中,似乎我應該能夠在不使用web.xml文件的情況下創建我的應用程序。從the site不帶web.xml的澤西島設置

JAX-RS提供了聲明根資源和提供者類,和根資源和提供單實例部署無關的抽象類的應用。 Web服務可以擴展這個類來聲明根資源和提供者類。

下面顯示了這個代碼的例子:

public class MyApplication extends Application { 
    @Override 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> s = new HashSet<Class<?>>(); 
     s.add(HelloWorldResource.class); 
     return s; 
    } 
} 

對我來說,這是說我可以用一個Application類來實現所有我的servlet設置的。這似乎是讀取我的資源類的註釋並設置正確的URL處理機制的配置。那是對的嗎?我不需要做其他設置?


我問,因爲我創建了以下和沒有工作(我收到了404 localhost:8080/{context}/test):

的pom.xml:

<dependencies> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-core</artifactId> 
     <version>1.12</version> 
    </dependency> 

    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.12</version> 
    </dependency> 

    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-json</artifactId> 
     <version>1.12</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.ws.rs</groupId> 
     <artifactId>jsr311-api</artifactId> 
     <version>1.1.1</version> 
    </dependency> 
</dependencies> 

應用類:

@ApplicationPath("/") 
public class JerseyTestApp extends Application 
{ 
    @Override 
    public Set<Class<?>> getClasses() 
    { 
     final Set<Class<?>> classes = new HashSet<>(); 
     classes.add(JerseyTestController.class); 
     return classes; 
    } 
} 

資源分類:

@Path("/test") 
public class JerseyTestController 
{ 
    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getTestMsg() 
    { 
     return "It works"; 
    } 
} 

回答