我正在尝试在没有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()
,加载所有根资源。
答案 0 :(得分:9)
您使用的是哪个版本的Jersey?尝试在两个类中拆分应用程序和资源。绝对删除@WebServlet
注释。即有一个类扩展了使用@ApplicationPath
注释的应用程序和另一个用@Path
注释的类。
编辑:确保WAR文件中包含jersey-servlet.jar
。