使用Jersey在单独文件中的RESTful资源和子资源

时间:2013-12-02 15:36:55

标签: jersey jax-rs embedded-jetty

我正在运行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。

有没有办法可以让泽西看到这两个类的资源?

非常感谢! 伊万

0 个答案:

没有答案