我正在运行Jetty嵌入式服务器和Jersey来提供几个RESTful资源。以下是我在Jetty服务器中配置Jersey的方法:
ServletHolder servletHolder = new ServletHolder(ServletContainer.class);
servletHolder.setInitParameter(
"com.sun.jersey.config.property.resourceConfigClass",
"com.sun.jersey.api.core.PackagesResourceConfig");
servletHolder.setInitParameter(
"com.sun.jersey.config.property.packages",
"my.webservices.package");
servletHolder.setInitParameter(
"com.sun.jersey.api.json.POJOMappingFeature", "true");
在my.webservices.package中,我有几个资源类。其中一个类使用@Path(“/”)注释,并且有一个使用@GET @Path(“my / resource”)注释的方法:
@Path("/")
public class MyRootResource {
@GET
@Path("my/resource")
public String myMethod() {...}
}
其他资源类使用@Path(“my / resource”)进行注释,没有使用(“/”)注释的方法:
@Path("/my/resource")
public class MyResourceResource {
// some GET methods pointing to resources relative to the root of this class
}
所以当我尝试访问http:// host :port / my-app / my / resource时,我希望请求能够访问我的第一个类的myMethod () 方法。但是,服务器返回代码405(方法不允许)。
我相信Jersey调度程序servlet将我的请求转发给第二个类,忽略了第一个类已经暴露了这个路径。
不幸的是我无法将两个实现都放在一个类中。我使用泽西岛版本1.17.1。
有没有办法可以让泽西看到这两个类的资源?
非常感谢! 伊万