如何对付恶心的@WebParam

在@WebService发布成wsdl时候, 方法的参数名称被自动的映射成arg0, arg1, 解决方法如下:
[code]public User create(
@WebParam(name = "user")
User user);[/code]
在wsimport自动生成的代码中也是这个样子. 这个馊主意丑陋无比. 如果参数多了,代码会惨不忍睹,而且这个工作会很无聊.
这个问题的主要原因还是java, 参数名称在编译后被抹掉了. 这个问题据说要在Java7才能解决.


几个solution:
1. 用插件来干这无聊的活,有人写吗? 但是写好后的代码依然惨不忍睹.
2. 用-g编译, 调试方式编译会包含很多其它信息. ParaNamer的BytecodeReadingParanamer是干这个事情用的.
3. 用[url=http://paranamer.codehaus.org/]ParaNamer[/ur]来编译你的代码. 它会在meta-inf下面加上点描述, 用它的api可以拿到参数名字. 这个对@WebParam没用.
4. 利用字节码工程和source, 直接对生成的代码加上@WebParam标记, 或者用debug的方法加上名字. 貌似还没人这个玩.

参数名称的重要性:
除了jaxb之外, ooweb现在的解决方法很无奈, 一些自动化验证框架如果有了参数名称,会正确的给出提示信息.

参考链接:
http://paulhammant.com/blog/at-least-one-unilateral-improvement-to-java.html
http://bugs.sun.com/view_bug.do?bug_id=6444738
http://paranamer.codehaus.org/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值