Axis2 Web服务 - 版本控制

时间:2013-03-08 20:20:10

标签: java service web axis2

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

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

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

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

我在网上经历了很多文章(遗憾的是没有例子。:()。而且很少有选择

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

2)对服务进行版本控制。与服务/ 版本1 / SumAndMult一样,服务/ 版本2 / SumAndMult

我如何实现第二种选择?这个选项背后的想法是什么?要维护服务类的副本吗?

如果我的服务器上只有一个服务类,我该如何公开多个wsdl?

另外,保持向后兼容性的最佳方法是什么?

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 个答案:

答案 0 :(得分:1)

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

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