Java 使用Jersey和@ApplicationPath注释加载资源
我正在尝试在不使用web.xml的情况下将基本的jersey restful服务部署到Tomcat7:Java 使用Jersey和@ApplicationPath注释加载资源,java,tomcat,jersey,jax-rs,servlet-3.0,Java,Tomcat,Jersey,Jax Rs,Servlet 3.0,我正在尝试在不使用web.xml的情况下将基本的jersey restful服务部署到Tomcat7: @WebServlet(loadOnStartup=1) @ApplicationPath("resources") @Path("/mypath/{name}") public class MyResource extends Application { @Override public Set<Class<?>> getClasses() {
@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;
}
}
@WebServlet(loadOnStartup=1)
@应用程序路径(“资源”)
@路径(“/mypath/{name}”)
公共类MyResource扩展应用程序{
@凌驾
public Set>s=new HashSet您使用的是Jersey的哪个版本?尝试将应用程序和资源分为两个类。明确删除@WebServlet
注释。即,使用@ApplicationPath
注释一个类扩展应用程序,使用@Path
注释另一个类
编辑:确保WAR文件中包含jersey servlet.jar
。我正在使用jersey的v1.14。我尝试从根资源类中拆分应用程序
,但没有效果。完成此操作后,我仍在尝试以相同的URL访问资源。WAR文件中是否包含jersey-servlet.jar?这就解决了问题。我不明白,Jersey servlet中特定于Jersey的servlet是如何被引用和加载我的资源的?使用servlet3 ServletContainerInitializer机制-Jersey通过META-INF服务注册一个自定义ServletContainerInitializer。如果@ApplicationPath
或@Path,servlet容器会调用此函数代码>注释类被找到并自动注册自定义Jersey servlet。@MartinMatula您应该在答案中添加Jersey servlet.jar
提示。重复的