一尘不染

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

tomcat

我正在尝试在不使用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

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

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


阅读 1083

收藏
2020-06-16

共1个答案

一尘不染

您正在使用哪个版本的Jersey?尝试将应用程序和资源分为两个类。绝对删除@WebServlet注释。也就是说,有一个类扩展了Application并带有@ApplicationPath注释@Path

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

2020-06-16