2012-09-19 48 views
0

比方說,我們有以下服務接口:如何從一個單身暴露多個接口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); 

這工作得很好。但現在,讓我們說這是有道理的,將2個實施起來,一個類下:

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

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

我希望,當我註冊這個類RestEasy的的目的是揭露兩條路徑,但它似乎像它只公開其中一個。有沒有辦法做到這一點?或者這是RestEasy中的一個錯誤?

回答

0

從邏輯上說,Impl類在類級別上不能有兩個@Path註釋,並且在一個類內只能有一個GET方法,而不是@Path。所以這是不可能的。您可以使用@Path註釋您的界面methods,這將是榮幸。

+0

這個類沒有任何'@ Path'註解,它們在接口上......當解析'@Path'使用時,RestEasy檢查一個類的接口,並在找到一個接口時停止,沒有什麼能阻止它使用所有具有'@ Path'的接口。對於'GET'問題,它仍然是一樣的:你可以推斷出因爲接口上的@ @ Path註解而調用哪個方法,並且這些方法在接口中聲明,並且使用全部可能檢查的反射。儘管如此,即使這些方法是用'@Path'聲明的,它也不起作用。 –

相關問題