0

我是网络服务的新手。我开发了一个示例 Web 服务,如下所示。

我正在尝试在数据中添加一个新字段,例如布尔成功;. (只是为了学习向后兼容性)

当我添加新字段时,正如我所料,服务调用从客户端存根失败。

我如何维护不同版本的服务。我有什么选择?

我在网上浏览了很多文章(不幸的是没有例子。:()。很少有选择是

1)用新的输出在类中编写不同的操作。这我明白了。

2) 对服务进行版本控制。喜欢 services/ version1 /SumAndMult, services/ version2 /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;
    }
}

作为

4

1 回答 1

1

案例#2 实际上只是意味着使用自己的 WSDL 添加新的 Web 服务。您可能会从旧的 WSDL 开始,进行所需的任何更改,然后以不同的服务名称发布它,以便通过不同的 URL 访问它。

使用 Axis2,您可以将多个服务打包到同一个 AAR 中。在 services.xml 中,您将定义一个<servicegroup>包含<service>每个服务的部分。所有服务都将使用相同的类加载器并可以访问同一组静态变量。

于 2013-03-10T17:29:41.207 回答