使用Jersey和@ApplicationPath批注加载资源

时间:2012-10-07 11:43:16

标签: java tomcat jersey jax-rs servlet-3.0

我正在尝试在没有web.xml的情况下将基本的泽西式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

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

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

1 个答案:

答案 0 :(得分:9)

您使用的是哪个版本的Jersey?尝试在两个类中拆分应用程序和资源。绝对删除@WebServlet注释。即有一个类扩展了使用@ApplicationPath注释的应用程序和另一个用@Path注释的类。

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