2013-03-08 182 views
0

我是新來的Web服務。我開發了一個示例Web服務,如下所示。Axis2 Web服務 - 版本

我試圖在數據中添加一個新字段,比如boolean sucess;。 (只是爲了學習向後兼容性)

當我添加新字段時,正如我預期服務調用失敗客戶端存根。

如何維護不同版本的服務。我有什麼選擇?

我已經通過網上很多文章了(可惜沒有例子:()。而幾個選項是

1)在類新的輸出寫入不同的操作。我明白了。

2)對服務進行版本控制。像服務/ VERSION1/SumAndMult,服務/ 版本2/SumAndMult

我如何實現第二個選項?這個選項背後的想法是什麼?要維護服務類的副本?

如果我的服務器上只有一個服務類,如何顯示多個wsdls?

此外,維護向後兼容性的最佳方法是什麼?

public Data getSumAndMultData(int[] input){ 
    Data result = new Data(); 
    int sum = 0; 
    int mult = 1; 

    for(int i = 0; i < input.length; i++){ 
     sum += input[i]; 
     mult *= input[i]; 
    } 
    result.setMult(mult); 
    result.setSum(sum); 
    return result; 
} 
class Data{ 
    int sum; 
    int mult; 
    public int getSum() { 
     return sum; 
    } 
    public void setSum(int sum) { 
     this.sum = sum; 
    } 

    public int getMult() { 
     return mult; 
    } 
    public void setMult(int mult) { 
     this.mult = mult; 
    } 
} 

由於

回答

1

案例#2真的只是手段,有自己的WSDL添加新的Web服務。您可能會從舊的WSDL開始,進行所需的任何更改,然後將其發佈到不同的服務名稱下,以便通過不同的URL訪問它。

使用Axis2,您可以將多個服務打包到同一個AAR中。在services.xml中,您將爲每個服務定義一個<servicegroup><service>部分。所有這些服務都將使用相同的類加載器,並且可以訪問同一組靜態變量。

+0

非常感謝您的回覆。我知道在service.xml中添加多個服務。您提到「使用自己的WSDL添加新的Web服務」。我應該用新的Response對象在服務器端創建一個新的服務類嗎? – Jack 2013-03-11 06:56:47

+0

是的,您將爲每項服務有不同的服務等級。 – Kenster 2013-03-11 15:17:09