序列化与反序列化
WS中的序列化与反序列化是指java对象与xml之间的相互转换,意即如果传输的数据是java对象,例如基本数据类型的包装类,自定义的义务类、集合等,客户端服务端需要显示注册序列化器和反序列化器。而利用axis开发的WS应用,是以“映射”的方式来体现这一点的,所以像axis这样的引擎也被称为OXM--Object XML Mapping。
服务端,如果程序运行时报错“faultString: java.io.IOException: No serializer found for class cn.itcast.myaxis.service.pojo.Customer in registry org.apache.axis.encoding.TypeMappingDelegate@b9b618”,则很可能是服务端没有声明java对象与xml的映射,例如<beanMapping qname="ns:Customer" xmlns:ns="urn:customer:pojo:service:itcast:cn" languageSpecificType="java:cn.itcast.myaxis.service.pojo.Customer" />,有几个对象就需要有几个映射声明,作为<service>的子元素。
beanMapping是axis引擎自带的序列化器,typeMapping则允许用户自定义序列化器,但是beanMapping可以认为是typeMapping的快捷方式,因为typeMapping默认的就是beanMapping,数组用arrayMapping,不过一般情况下数组的序列化不用显示声明也可以。
有的集合类,比如hashtable确实有序列化器,但和其他的soap实现没有正规的交互;SOAP规范也没有设计复杂对象。可靠的方式就是使用数组发送集合对象(但.N

本文介绍了Java Web Service中序列化与反序列化的过程,强调了在服务端和客户端注册对象映射的重要性,并提供了解决相关错误的方法。此外,还探讨了文件上传下载的效率问题,指出MIME方式的优势,并给出了使用DataHandler实现文件上传的示例代码。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



