2013-04-02 76 views
1

使用@WebService註釋可以將無狀態EJB bean作爲Web服務發佈。然而,是否有一種方法可以發佈幾個具有相同實現類的Web服務,而無需通過爲此目的定義子類的方式?指向相同實現的多個Web服務名稱

I.e.如果我們定義所有具有@WebService註釋並且是實際實現該邏輯的A的後代的空白類A1,A2,A3,A4,則是可以實現的。然後,JAX-WS將準確發佈4個具有不同名稱但實際上具有相同實現的Web服務。

不過,我要的是具有相同的實現和實現內部的JAX-WS 註冊多個網絡的服務能夠得到的名字,通過此實現調用Web服務的

編輯: 當前試圖通過使用JAX-WS端點類(運行時發佈者)來實現結果。

+0

創建Web服務時,有兩種開發風格:_Contract Last_和_Contract First_。在使用最後一個合同的方法時,首先從Java代碼開始,然後從中生成Web服務合約(WSDL)。在使用契約優先時,您首先使用WSDL契約,並使用Java來實現所述契約。 http://briansjavablog.blogspot.mx/2013/01/spring-web-services-tutorial.html –

+0

這是類似於[這個問題](http://stackoverflow.com/q/39346061/476716)?正如@PaulVargas暗示的那樣,如果你是以合同優先還是合同最後優先順序,我無法解決問題。 – OrangeDog

回答

0

我使用了這樣的解決方案:

@Startup 
@Singleton 
@LocalBean 
public class WSPublisher 
{ 
    @PostConstruct 
    void publishAll() 
    { 
     Reflections reflections = new Reflections("abc.de.f"); 
     Set<Class<? extends MyBean>> myBeans = reflections.getSubTypesOf(MyBean.class); 

     for(Class<? extends MyBean> myBean: myBeans) 
      Endpoint.publish("http://localhost:9090/project/" + myBean.getSimpleName() + "WS", new MyBean()); 
    } 
} 

現在所有web服務前端動態註冊,並從它們中的任何方法調用被重定向到一個共同的實現類。

相關問題