加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 00:26:22 所属栏目:安全 来源:网络整理
导读:?????? 由于种种历史原因,系统开发的web service部署的平台是weblogic 10g,为了符合公司的要求,我们将部署的平台升级到了11g,解决了跨域访问、依赖包变更、session保存等等问题,然而最让我头疼确是一个看似很小的问题,而是由于11g 使用了jaxws RI 2.0.

?????? 由于种种历史原因,系统开发的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返回对象的首字母大写属性名称。




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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读