修改AXIS2源码解决 @webresult注解无法修改返回值名称问题

因项目需要,最近在用axis2搭建webservice服务,使用过程中发现axis2的axis2-kernel-1.6.2.jar包里有一个坑,准确说是一个bug(看来apache的东西也不是完美无瑕的哈),记录一下。

还原一下发现这个坑的整个过程:

下面是我的webservice服务端核心实现代码,可以看到我在两个方法的返回值前面都加上了@webresult注解,并且各自赋予别名,然而发布后通过WSDL文档看到两个别名并没有生效,感觉非常纳闷,中间经历了无数次各种尝试改代码都无效,差点要怀疑人生了,但我没有怀疑人生,我开始怀疑是不是apache给的这个包有bug,于是开始了漫长的源码分析定位。。。

 

大约两个小时的源码追踪后,我的猜测被证明是对的,罪魁祸首就是下面这行代码:

代码命名很规范基本不需要注释了,先获得方法上的@webresult注解,判断注解不为空时获取该注解的name属性,也就是我们给返回值取得别名,问题出在获取别名这个判断上,刚好判断反了(汗,很低级的错误),这样判断的结果就是设置了别名反而被它用默认值覆盖了。

修改就很简单了 ,将框内的if语句修改为 if (returnName == null || "".equals(returnName)) 即可,修改后如下:

改完源码启动maven重新编译,由于一开始编译总是失败,我把test 和test-resource目录下的文件全部去掉,同时也去掉pom文件中对测试代码的编译部分,进入项目根目录运行打包命令,新鲜出炉的jar包就有了。如果项目导入eclipse里面报错不用管,只需要外部的maven编译打包就好了。

将新的jar导入项目替换原来的maven引用,问题解决。

人如果没有梦想,那就作一条无忧无虑的白痴咸鱼,也挺好的。

 

转载于:https://www.cnblogs.com/sen-2017/p/8711514.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值