6

我正在尝试在没有 web.xml 的情况下将基本的 jersey restful 服务部署到 Tomcat7:

 @WebServlet(loadOnStartup=1)
 @ApplicationPath("resources")
 @Path("/mypath/{name}")
 public class MyResource extends Application {

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

 @GET
 @Consumes("text/plain")
 @Produces("text/plain")
 public String getWelcome(@PathParam(value = "name") String name) {
     return "Welcome to jax-rs " + name;
 }
}

尝试访问时出现 404:/myapplication/resources/mypath/sample

我可以使用注解部署 servlet @WebServlet,因此这与将没有 web.xml 的 servlet 加载到 Tomcat7 中无关。

通过阅读 Jersey 的文档,运行时应该扫描扩展Application和执行的类getClasses(),加载所有根资源。

4

1 回答 1

9

您使用的是哪个版本的泽西岛?尝试将应用程序和资源拆分为两个类。绝对删除@WebServlet注释。即有一个类扩展 Application 用注释@ApplicationPath和另一个类用@Path.

编辑:确保jersey-servlet.jar包含在您的 WAR 文件中。

于 2012-10-07T20:07:18.937 回答