我是网络服务的新手。我开发了一个示例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;
}
}
作为
答案 0 :(得分:1)
案例#2实际上只是意味着使用自己的WSDL添加新的Web服务。您可能会从旧的WSDL开始,进行所需的任何更改,然后将其发布到不同的服务名称下,以便通过不同的URL访问它。
使用Axis2,您可以将多个服务打包到同一个AAR中。在services.xml中,您将定义<servicegroup>
,每个服务都包含<service>
个部分。所有服务都将使用相同的类加载器,并且可以访问同一组静态变量。