当前位置:编程学习 > JAVA >>

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包,部署在服务器上。
建议别使用批处理生成部署,比较麻烦,容易出错。
楼主的问题未遇到过。

--------------------编程问答--------------------
引用 1 楼 leecyz 的回复:
Axis2一直使用eclipse插件生成的aar包,部署在服务器上。
建议别使用批处理生成部署,比较麻烦,容易出错。
楼主的问题未遇到过。


我的Axis2也都用eclipse插件生成的aar包,运行良好 --------------------编程问答-------------------- 同求啊!!!
补充:Java ,  Java EE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,