Axis2用RPC方式报文中参数的顺序问题
本帖中的代码我举个栗子,不代表真实情境。之前用WSDL2Java生成的代码与WSDL的参数顺序是对应的,可以正常调用。
请求报文类似于:
...
<fruits>
<pear>10</pear>
<banana>20</banana>
<apple>60</apple>
</fruits>
...
这种报文发送到目前手中的项目对接的ESB中是可以运行的。
后来,为了精简和高效化代码,我们使用了RPC方式重构了代码,如:
Java对象结构如下
public class Frutes
{
private int pear;
private int banana;
private int apple;
public int setPear(int pear){this.pear=pear;}
public int getPear(){return this.pear;}
...
}
抓包后发现此对象被转换成了形如下面的报文
...
<fruits>
<apple>60</apple>
<banana>20</banana>
<pear>10</pear>
</fruits>
...
注意!RPC方式转换后报文中,参数的顺序是按照参数名排序的,而之前的报文是根据WSDL定义排序的。顺序不对应通常来讲似乎不算问题,但是奇葩就奇葩在,ESB接口的逻辑要求必须按照WSDL的顺序发送请求,否则会返回逻辑错误。
至于ESB那边怎么处理我这里是没法管的,求高手给出靠谱的解决参数顺序问题的方法。
Java WSDL ESB WebService Axis2 --------------------编程问答-------------------- Axis2一直使用eclipse插件生成的aar包,部署在服务器上。
建议别使用批处理生成部署,比较麻烦,容易出错。
楼主的问题未遇到过。
--------------------编程问答--------------------
我的Axis2也都用eclipse插件生成的aar包,运行良好 --------------------编程问答-------------------- 同求啊!!!
补充:Java , Java EE