携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第十天,点击查看活动详情
在跟局方对接接口的时候,局方回执我的wsdl接口,发现收不到同步回执,怀疑问题为回执参数首字母小写导致
代码中的参数对象首字母确实是大写,但生成的wsdl文件确变成了小写,目前是用axis2生成的
用axis2发布的webservice的,但是axis2发布成WSDL文件以后,会根据getXXX()方法 截取属性名,比如说有个属性是“Name”,那么对应的get方法就是getName(),如果他判断首字母是小写就会设置为小写,发现了变为小写的原因,选择使用xFire
运行过程中发现: xfire-spring-1.2.6.jar xfire-all-1.2.6.jar 中都有xfire.xml和xfireXmlBeans.xml以及customEditors.xml文件,所以最好两个文件一起修改替换
修改回执对象,通过 org.codehaus.xfire.aegis.type.java5.XmlElement 来定义参数的名称
运行后首字母成功变为大写
之后研究发现axis2也可以自定义设置首字母,在回执参数对象中加入
private static org.apache.axis.description.TypeDesc typeDesc =
new org.apache.axis.description.TypeDesc(CSPResult.class, true);
static {
typeDesc.setXmlType(new javax.xml.namespace.QName("iptv", "CSPResult"));
org.apache.axis.description.ElementDesc elemField = new org.apache.axis.description.ElementDesc();
//设置匹配的字段名称
elemField.setFieldName("result");
//修改之后的名称
elemField.setXmlName(new javax.xml.namespace.QName("", "Result"));
elemField.setXmlType(new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "int"));
elemField.setNillable(false);
typeDesc.addFieldDesc(elemField);
elemField = new org.apache.axis.description.ElementDesc();
//设置匹配的字段名称
elemField.setFieldName("errorDescription");
//修改之后的名称
elemField.setXmlName(new javax.xml.namespace.QName("", "ErrorDescription"));
elemField.setXmlType(new javax.xml.namespace.QName("http://schemas.xmlsoap.org/soap/encoding/", "string"));
elemField.setNillable(true);
typeDesc.addFieldDesc(elemField);
}
即可自定义回执参数