2012-08-23 58 views
0

我需要從我的java工件中生成自定義wsdl。我使用cxf apis來生成服務。Cxf Webservice WSDL中的自定義字段

讓我詳細描述這個場景, 我想從同一組java產生不同的WSDL。這種要求背後的想法是向客戶提供基於許可的操作/消息。我們有一組定義爲消息和服務接口/實現的java對象。使用Cxf API(ServerFactoryBean)我按需生成Service/WSDL(純運行時操作)。

只是要清楚,我給示例場景

public class InputBean { 

    private XYZ xyz; 
    private ABC abc; 
    private PQR pqr; 

其中xyz,ABC,PQR一些Java對象和InputBean在我的服務實現類使用。

的要求是有條件的基礎上許可

if(XYZ Licensed){ 
    Include XYZ in bean 
} 

if(PQR Licensed){ 
    Include PQR in bean 
    } 
if(XYZ and PQR licensed){ 
    Inlcude XYZ and PQR 
} 

我知道這是奇怪的要求,不知道如果我已經解釋清楚我的問題有這些字段。 我會嘗試繼承(動態方法調度),但我想隨機組合。

任何幫助,將不勝感激!

回答

0

我已經通過創建一個模板文件(自由標記模板)和所需類的佔位符來解決此問題。這將在運行時用所需的類名替換,使用free marker api創建java源文件,然後由java compiler api創建java類。還開發了自定義類加載器來在運行時加載類。所有操作將在運行時在後臺執行。我無法爲我的要求找到更好的解決方案,但我對此感到滿意,因爲它能夠按預期提供完美的結果。