论坛首页 Java企业应用论坛

如何对付恶心的@WebParam

浏览 3828 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-15  
SOA


在@WebService发布成wsdl时候, 方法的参数名称被自动的映射成arg0, arg1, 解决方法如下:
public User create(
    @WebParam(name = "user")
    User user);

在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/
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics