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

我正在尝试在没有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() ,加载所有根资源。

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

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