• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

关于SOAP反序列化的一点认识,正好解释了问题所在

发布: 2007-7-01 18:47 | 作者: admin | 来源: | 查看: 12次 | 进入软件测试论坛讨论

领测软件测试网 看了一段关于反序列化的代码,原来在从xml代码到java代码的时候,有一个重新构造的过程,Apache Soap用的是org.apache.soap.encoding.soapenc.BeanSerializer来完成这个工作的.一个java 类是被看作一个bean来处理,重新构造时需要调用set方法,如果没有set方法,或者为private的时候,那么就等于构造了一个空的对象,所以造成了在客户端为空的现象.其实从服务端返回的不为空,只是本地重新构造时出了问题.下面的代码没有用apache默认得反序列化类,而是自己实现的,没有用到set.

public Bean unmarshall(String inScopeEncStyle, QName elementType,
  Node src, XMLJavaMappingRegistry xjmr, SOAPContext ctx)
  throws IllegalArgumentException
  {
    Element root = (Element)src;
    Element tempEl = DOMUtils.getFirstChildElement(root);
    samples.addressbook2.Phone target;

    try
    {
      target =
        (samples.addressbook2.Phone)samples.addressbook2.Phone.class.newInstance
        ();
    }
    catch (Exception e)
    {
      throw new IllegalArgumentException("Problem instantiating bean: "
        + e.getMessage());
    }

    while (tempEl != null)
    {
      Bean paramBean = xjmr.unmarshall(inScopeEncStyle,
      RPCConstants.Q_ELEM_PARAMETER,
      tempEl, ctx);
      Parameter param = (Parameter)paramBean.value;
      String tagName = tempEl.getTagName();


      if (tagName.equals("areaCode"))
      {
        target.areaCode_Elem = ((Integer)param.getValue()).intValue();
      }

      if (tagName.equals("exchange"))
      {
        target.exchange_Elem = (java.lang.String)param.getValue();
      }

      if (tagName.equals("number"))
      {
        target.number_Elem = (java.lang.String)param.getValue();
      }


      tempEl = DOMUtils.getNextSiblingElement(tempEl);
    }

    return new Bean(samples.addressbook2.Phone.class, target);
  }

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网