如何在RestEasy中从单个单例中公开多个接口

时间:2012-09-19 15:41:43

标签: java jax-rs resteasy

假设我们有以下服务接口:

@Path("servicea")
public interface ServiceA {
    @GET void aMethod();
}

@Path("serviceb")
public interface ServiceB {
    @GET void anotherMethod();
}

现在,使用RestEasy,可以使用任何支持的配置轻松地将这些作为Rest服务公开。在这种情况下,我们有ServiceA的实现和ServiceB的实现,我们通过org.jboss.resteasy.spi.Registry导出,如下所示:

Registry registry = (Registry) servletContext.getAttribute("org.jboss.resteasy.spi.Registry");
registry.addSingletonResource(serviceAimpl);
registry.addSingletonResource(serviceBimpl);

这很好用。但现在,让我们说在一个类下将两个实现组合在一起是有意义的:

public class ServiceImpl implements ServiceA, ServiceB {
    ...
}

Registry registry = (Registry) servletContext.getAttribute("org.jboss.resteasy.spi.Registry");
registry.addSingletonResource(serviceImpl);

我希望当我将这个类的对象注册到RestEasy以暴露两个路径时​​,但它似乎只暴露了两个中的一个。有没有办法实现这个目标?或者这是RestEasy中的错误吗?

1 个答案:

答案 0 :(得分:0)

逻辑上,Impl类在类级别不能有两个@Path注释,而在一个类中,只有一个GET方法没有@Path。所以这是不可能的。您可以使用methods对您的界面@Path进行注释,这将很荣幸。