http://blog.csdn.net/mudboy/archive/2006/09/08/1194535.aspx

一文中说到我使用AXIS2所遇到的一些问题,那是服务端的一些问题,但其实在自动生成客户端代码方面也有一些问题,场景如下:

1、  环境:前后端都是AXIS2,一些操作,部署或代码生成都安默认方式进行。

2、  后端发布SERVICE

3、  前端根据WSDL生成代码

4、  测试客户端,没有问题。

5、  更新服务端的一些东西(甚至只是重启服务端),注意未改变发布的接口。

6、  用上面的客户端测试,抛出异常,错误信息是“意料之外的元素***”,说白了就是解析不了返回的SOAP消息了。

7、  再生成一次代码,测试,OK。

为了查明此问题,首先当然是看前后的WSDL是不是有变化,结果发现还真有一些变化,但只是一些消息申明的顺序有变化(为什么会有这样的变化,有些莫明其妙,没有深究),应该并不影响最终的SOAP生成,只是同层次的元素可能顺序会有些变化,比如:

从:

<a>

<a1>a</a1>

<a2>a</a2>

<a3>a</a3>

<a4>a</a4>

</a>

变化成:

<a>

<a3>a</a3>

<a1>a</a1>

<a2>a</a2>

<a4>a</a4>

</a>

按常理,如果SCHEMA中不规定元素的顺序,客户端不应该因为这种变化而无法成功解析,但看看AXIS2生成的客户端代码,却有些死板,位置变了/少了/多了都不行,必须一模一样,可想而知这样的代码在生产中是没有办法使用的。

最后解决办法是自己改了相应的解析代码,并且尽可能的灵活,即使顺序有变化或是增加了新元素,也不会影响响应的解析工作。

有时间的话干脆把AXIS2生成客户端的代码改造一下,不过,在改造前,还是先去下一个最新版本,看看有没有解决。

不过,用到这,也觉得有些如履薄冰的感觉,劝你还是慎用为妙!!

慎用AXIS2(续)相关推荐

  1. [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)

    前言 本篇是承接上一篇: [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 在上一篇粗略地介绍了如何使用Top-Down的方式创建 ...

  2. [Axis2与Eclipse整合开发Web Service系列之三] 服务端返回值

    前言 在前面的三篇中 [Axis2与Eclipse整合开发Web Service系列之一] 生成Web Service Client(将WSDl 转化成 Java代码) [Axis2与Eclipse整 ...

  3. 自研GPU之火(续)

    自研GPU之火(续) 沐曦自研5nm GPU 近些年由于技术封锁,芯片产业发展受阻,自主研发的中国芯突破技术封锁一直是希望看到的. 华为也因此走上了自主研发的道路,从最基础的工艺做起,虽然速度不快,但 ...

  4. 计算机视觉一些项目实战技术(续)

    计算机视觉一些项目实战技术(续) PROTO-OBJECT BASED SALIENCY 在本项目中,提出一种新的方法来完成显著目标侦测的任务.与以往基于聚光灯注意理论的显著目标检测器相比,遵循基于对 ...

  5. 【第八篇】SAP ABAP7.5x新语法之F4增强【续】

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:SAP ABAP7.5x系列之F4增强[续] 前 ...

  6. 1.低权限的程序向高权限的程序发消息 2.慎用setcurrentdirectory

    1.低权限的程序向高权限的程序发消息 2.慎用setcurrentdirectory 转载于:https://www.cnblogs.com/chunyou128/p/3921903.html

  7. Deep Learning 学习随记(三)续 Softmax regression练习

    上一篇讲的Softmax regression,当时时间不够,没把练习做完.这几天学车有点累,又特别想动动手自己写写matlab代码 所以等到了现在,这篇文章就当做上一篇的续吧. 回顾: 上一篇最后给 ...

  8. HDU 1429 胜利大逃亡(续) (BFS+位压缩)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429 胜利大逃亡(续) Time Limit: 4000/2000 MS (Java/Others)  ...

  9. 1024,不讲技术,来一套程序员续命操~

    今天有一群很可爱的人过节, 他们是一种神奇的生物:喝的是咖啡,挤的是代码, 每天的工作就是让我们所处的这个世界, 再美好一点,再便利一点,再酷一点, 享受他们的工作成果,我们很快乐, 而这份快乐,常常 ...

最新文章

  1. 爬一爬 iPhone 11为何嘴上说真丑,销量却真香?
  2. 《Servlet和JSP学习指南》一第2章 Session管理 2.1 网址重写
  3. python 3.9 新特性 简介
  4. webpack4+react多页面架构
  5. IBMX60笔记本装LINUX,《如何安装Storage Manager管理软件客户端并调IBM DS系列存储.doc...
  6. 【源码学习之spark core 1.6.1 各种部署模式所使用的的TaskSceduler及SchedulerBackend】...
  7. iptables基础篇
  8. 导入导出oracle数据库表的dmp文件
  9. LaTeX:Texlive 2019和TeX studio
  10. python开发软件的实例-Python 开发工具和框架安装实例步骤
  11. 羿的后人证明上古历史不是神话
  12. [lua]紫猫lua教程-命令宝典-L1-03-01. 闭包
  13. 犹太人成功和浪漫的秘诀(.html)
  14. 安卓腾讯Bugly使用教程
  15. mysql修改表结构会锁表吗_MYSQL完美解决生产环境改表结构锁表问题
  16. thunderbird 雷鸟中文版下载,安装
  17. 如何快速的自建 DoH ( DNS over HTTPS) 服务
  18. x265-1.7版本-common/lowres.cpp注释
  19. 【R语言】必学包之dplyr包
  20. 软件开发过程的五个阶段

热门文章

  1. su封面插件_建模狂魔的520,和女朋友在SU里过?
  2. 第10章:项目沟通管理和干系人管理(2)-章节重点
  3. 《系统集成项目管理工程师》必背100个知识点-03项目管理过程组
  4. MyBatis中提示:Invalid Bound statemnet(not found )com.
  5. SpringCloud-服务注册与实现-Eureka创建服务注册中心(附源码下载)
  6. Winform中设置ZedGraph因设置小刻度导致的竖直虚线显示过多
  7. SpringBoot+Jquery+Jstree实现企业架构管理
  8. JS实现限制input上传文件的大小和格式
  9. SpringBoot 报错Field XXX required a bean of type XXX that could not be found.
  10. VUE—从入门到飞起(五)