axis2 和 xfire 接口调用问题排查

时间:2021-02-04 03:33:56
背景:
1个运营商厂家开发人员离职,我们为了上线对接接口,迁就对方客户端调用。对方客户端框架用的是xfire.调用方式基本为:
 
Service serviceModel = new ObjectServiceFactory().create(EOMSProcessSheet.class);
XFire xfire = XFireFactory.newInstance().getXFire();
XFireProxyFactory factory = new XFireProxyFactory(xfire);
String serviceUrl = "http://127.0.0.1:8080/EOMS/services/OSSProcessSheet";
EOMSProcessSheet client = null;
try {
//factory.create(service, transport, url);
//factory.create(service, transport, url)
client = (EOMSProcessSheet) factory.create(serviceModel, serviceUrl);
} catch (MalformedURLException e) {
System.out.println("Client call webservice has exception: "+ e.toString());
}
String result1 = client.isAlive("4444", "7777");
 
 
服务器联调的时候会报数组越界:具体错误出现在
axis2 和 xfire 接口调用问题排查
DEBUG的时候 发现参数解析有问题,解析代码如下
axis2 和 xfire 接口调用问题排查
axis2 和 xfire 接口调用问题排查

axis2 和 xfire 接口调用问题排查

debug的时候修改参数未 <arg0></arg0>就没问题了 。无奈准备改源代码的时候,下了一个比较old的ADB包,部署上去,问题都解决了。
这个接口问题查询给了一个
 
教训是 : 及时是有名的开源包,也不是总是向前兼容的。