webservice从weblogic 10g 升级至11g过程中ELEMENT NAME的问题

来源:互联网 发布:淘宝网短裤套装 编辑:程序博客网 时间:2024/06/05 14:09

       由于种种历史原因,系统开发的web service部署的平台是weblogic 10g,为了符合公司的要求,我们将部署的平台升级到了11g,解决了跨域访问、依赖包变更、session保存等等问题,然而最让我头疼确是一个看似很小的问题,而是由于11g 使用了jaxws RI 2.0.5的版本致使所以soap对象中的element name变为了首字母小写,而原来在10g中首字母都是大写,在前端所有的参数都是以首字母大写的名称来读取数据,这两个版本的生成web service的element name完全与VO属性的首字母大小写没有关系。。。这最终造成了前端无法正常访问web service。到官网查了下,虽然已经有report了bug,但是貌似不会再后继版本修复,人家不认为这是一个问题,变量名嘛,本来也是应该小写开头。既然没机会等修复版本,只能再找其他方法,在属性名称上使用@XmlElement(name="XXXX")的方式可以强制名称修改,但是有一个问题,在返回值的时候会返回同样的两个数据,只是其中一个数据时强制修改的名称,而另一个是旧有的名称,虽然前端可以调用,但是平白增加了一倍的网络传输,得不偿失啊。实际上jaxws规范还会在另一个地方解析标签,那就是属性getter/setter方法上,比如

class user {

      private String name;

     @XmlElement(name="Name")

      public String getName(){

            return name;

      }

     

      public void setName(String name){

             this.name=name;

      }

}

       按照上面的注释位置就可以得到在weblogic 10g中web service返回对象的首字母大写属性名称。




愿脑哥的光辉指引我前进的方向

原创粉丝点击