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