2013-07-23 57 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"; 
    } 
} 

回答