- 浏览: 1499749 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (798)
- struts2 (42)
- servlet (20)
- quartz (4)
- jquery & ajax (24)
- tomcat (5)
- javascript (15)
- struts1 (8)
- 搜索关键字及链接 (3)
- fckeditor (3)
- Apache (5)
- spring (22)
- linux (3)
- 企业应用 (8)
- 综合应用 (13)
- 服务器 (2)
- 数据库 (85)
- 性能调优 (21)
- 网络应用 (15)
- 缓存技术 (8)
- 设计模式 (39)
- 面试题 (7)
- 程序人生&前辈程序员 (29)
- java基础 (59)
- hibernate (75)
- log4j (4)
- http (11)
- 架构设计 (28)
- 网页设计 (12)
- java邮件 (4)
- 相关工具 (11)
- ognl (7)
- 工作笔记 (18)
- 知识面扩展 (12)
- oracle异常 (1)
- 正则表达式 (2)
- java异常 (5)
- 项目实践&管理 (1)
- 专业术语 (11)
- 网站参考 (1)
- 论坛话题 (2)
- web应用 (11)
- cxf&webservice (22)
- freemarker (3)
- 开源项目 (9)
- eos (1)
- ibatis (6)
- 自定义标签 (3)
- jsp (3)
- 内部非公开文档(注意:保存为草稿) (0)
- 国内外知名企业 (2)
- 网店 (3)
- 分页 (1)
- 消费者习惯 (2)
- 每日关注 (1)
- 商业信息 (18)
- 关注商业网站 (1)
- 生活常识 (3)
- 新闻 (2)
- xml&JSON (5)
- solaris (1)
- apache.common (3)
- BLOB/CLOB (1)
- lucene (2)
- JMS (14)
- 社会进程 (8)
- SSH扩展 (2)
- 消费心理 (1)
- 珠三角 (1)
- 设计文档 (1)
- XWork&webwork (1)
- 软件工程 (3)
- 数据库及链接 (1)
- RMI (2)
- 国内外知名企业&人物 (1)
最新评论
-
司c马:
简介易懂、
OutputStream和InputStream的区别 -
在世界的中心呼喚愛:
解决我的问题
Java获取客户端的真实IP地址 -
bo_hai:
都是些基本的概念呀!
SSO -
tian_4238:
哥们,你也是搞水利这块的吧。
巧用SQLQuery中的addScalar -
loveEVERYday:
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结
序列化与反序列化
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"></beanmapping>,有几个对象就需要有几个映射声明,作为<service>的子元素。
beanMapping是axis引擎自带的序列化器,typeMapping则允许用户自定义序列化器,但是beanMapping可以认为是typeMapping的快捷方式,因为typeMapping默认的就是beanMapping,数组用arrayMapping,不过一般情况下数组的序列化不用显示声明也可以。
有的集合类,比如hashtable确实有序列化器,但和其他的soap实现没有正规的交互;SOAP规范也没有设计复杂对象。可靠的方式就是使用数组发送集合对象(但.Net不能处理他们)。不过有些java的SOAP实现支持hashtable的组装和拆解.
客户端,如果程序运行时报错“org.xml.sax.SAXException: Deserializing parameter ''getCustomerReturn'': could not find deserializer for type {urn:customer:pojo:service:itcast:cn}Customer”,则需要显示声明注册映射信息,示例代码如下:
+ expand sourceview plain
如果代码call.invoke(new Object[]{5})没有被赋予对象Object o,在该句添加断点,调试运行时用watch查看该元素,会发现报错“com.sun.jdi.InvalidTypeException: Generated value (int) is not compatible with declared type (java.lang.Object). occurred while setting value in array.”这是因为如果没有强制转换赋值的话,可能不能调用通过注册的序列化器和反序列化器,所以会报错。
如果是集合类的,采用上述方法即可。不过有的时候还要看jdk版本。我用的jdk6u18,无论是否有泛型,返回list采用上述代码都可以;但是map没有泛型的话,还是会报错“No deserializer for {http://schemas.xmlsoap.org/soap/encoding/}string”,需要添加代码显示声明EncodingStyle(jdk6u16就不需要这么做):
call.setEncodingStyle ("http://schemas.xmlsoap.org/soap/encoding/");或者-->
call.setEncodingStyleType ("http://schemas.xmlsoap.org/soap/encoding/")--看axis的版本了。
RMIException(映射到SOAP Fault)不注册也可以被序列化,但是信息不全,所以最好还是序列化,可以用TCP/IP Monitor查看响应信息来验证。
文件上传与下载
直接编码用byte[]的方式上传下载文件也可以,但是性能差,尤其传输大文件的时候--用TCP/IP Monitor可以看到传输的文件是一次性传输,打个比方来说就像是用一辆大卡车在一条马路上运送一批货物,可以想到,如果此时该马路上还有其他卡车需要运送货物的话,很容易造成交通堵塞。所以,WS的实际应用中文件的上传下载是采用MIME方式,包装成DataHandle传输,相当于一批货物分散到多个小卡车依序在一条马路上运输,而这需要activation.jar和mail.jar包的支持。
axis中文件的上传下载是放到MessageContext环境中的。下面是用MIME方式上传文件的示例代码:</service>
发表评论
-
J2EE关于ApacheAxis2的Webservice消息
2011-09-19 20:18 1596到目前为止,web service ... -
Axis Web Service开发之旅 (十) --异步调用WebService
2011-09-19 19:52 2967http://blog.csdn.net/crazystone ... -
《精通JAVA核心技术》-21.6 web服务开发
2011-07-18 10:06 1218详细的描述了使用axis开发web服务。 -
联通接口.doc
2011-07-14 09:44 1157联通接口.doc -
联通接口
2011-07-14 09:34 1联通接口 -
传智播客-web service(8)-利用xfire开发WS应用
2011-07-03 11:45 1971xfire概述 xfire是下一代j ... -
传智播客-web service(6)-即时发布与定制发布、wsdl文档与java对象
2011-07-03 11:42 2093即时发布与定制发布 ... -
传智播客-web service(5)-利用axis开发WS应用
2011-07-03 11:41 1687Axis 1、再说soap。 前文 ... -
传智播客-web service(4)-利用jdk6开发WS应用
2011-07-03 11:40 2780java开发web service最简单 ... -
传智播客-web service(3)-web service与SOA、web service与ejb
2011-07-03 11:39 1690Web Service与SOA web servic ... -
传智播客-web service(1)-B/S、C/S与远程调用
2011-07-03 11:38 2013web service是徐培成老师 ... -
传智播客-web service(2)-ESB、SOAP和WSDL
2011-07-03 11:36 1729ESBESB,Enterprise Service Bus ... -
Web服务搜索与执行引擎(七)——重温WSDL与SOAP
2011-06-29 14:50 1800接下来的几篇文章是让 ... -
调用天气预报Web Service客户端
2011-06-29 10:27 3558(结合JAVA的WebService支持.pdf进行理解) ... -
官方例子及相关文章
2011-06-28 17:26 1272http://www.stevencharlesrobinso ... -
Jaxb 通过bean与xml交互
2011-06-28 16:05 2020package test; import java.io.F ... -
使用 JAXB 框架定制 Web 服务行为
2011-06-28 15:38 1912http://www.ibm.com/developerwor ... -
webservice_张孝祥
2011-06-22 14:13 5webservice_张孝祥.rar -
常用Web Service汇总(天气预报、时刻表等)
2011-06-21 11:51 1332下面总结了一些常用的Web Service,是平时乱逛时收 ... -
webservice---HelloWorld
2010-11-18 15:42 1291服务器端: 1、下载附件中的HelloWorld.rar,在 ...
相关推荐
Hadoop 3.x(MapReduce)----【Hadoop 序列化】---- 代码 Hadoop 3.x(MapReduce)----【Hadoop 序列化】---- 代码 Hadoop 3.x(MapReduce)----【Hadoop 序列化】---- 代码 Hadoop 3.x(MapReduce)----【Hadoop ...
在`json_lib_demo2`这个示例文件中,可能包含了如何使用`json-lib`进行序列化和反序列化的代码演示。通常,这样的示例会包含创建Java对象、转换成JSON字符串、再将JSON字符串转换回Java对象的过程,以便开发者理解并...
标题中的“WEB漏洞-反序列化之PHP&JAVA全解(下)”指的是关于Web应用程序安全领域的一个重要话题,即PHP和JAVA平台上的反序列化漏洞。反序列化漏洞是由于程序在处理序列化数据时没有充分验证输入,从而允许攻击者构造...
C++的JSON序列化和反序列化是开发Web服务、网络通信或存储配置文件时必不可少的技术。选择合适的库并理解其工作原理,能帮助我们更高效地处理JSON数据。通过实践和学习,可以掌握更多高级技巧,如自定义序列化策略、...
CVE-2020-9484的根源在于错误配置和`org.apache.catalina.session.FileStore`组件中的本地文件包含(LFI)以及反序列化问题。当Tomcat配置使用`org.apache.catalina.session.PersistentManager`作为会话管理器,并且...
ShiroExp-1.3.1-all.jar shiro反序列化检测工具 我这里是用于搭建攻防演练演示环境用
**protobuf常用序列化和反序列化API** protobuf(Protocol Buffers)是Google开发的一种数据序列化协议,广泛应用于网络通信、数据存储等领域。它提供了一种高效、灵活且跨平台的方式来编码和解码结构化数据。...
XML序列化与反序列化是.NET框架中处理数据交换的重要技术,它允许我们将对象的状态转换为XML格式的数据,也可以将XML数据恢复为等效的对象。这个实战项目专注于使用C#实现这一过程,使得开发者能够方便地在XML文件和...
C#-JSON序列化和反序列化辅助类
4. **输入/输出(I/O)**:流的概念、文件操作、对象序列化、缓冲区和文件复制。 5. **网络编程**:套接字编程,客户端和服务器端的交互。 6. **多线程**:线程的创建与同步,包括synchronized、wait()、notify()和...
64-64.渗透测试-PHP序列化与反序列化.mp4
在IT领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络通信和分布式系统中。它们涉及将对象的状态转换为可持久化的格式(序列化),以及将这种格式还原回原来的对象(反序列化)。本文将深入探讨这两...
Java对象的序列化和反序列化是Java编程中一项重要的技术,主要用于将对象的状态转换为字节流,以便存储或在网络上传输。这一过程对于理解Java的IO操作、持久化数据以及实现分布式通信等场景非常关键。 首先,我们来...
7. **输入输出流**:学习文件操作,包括文件的读写、对象序列化与反序列化,以及标准输入输出流的使用。 8. **集合框架**:熟悉ArrayList、LinkedList、HashSet、HashMap等集合类的使用,理解它们的底层实现和操作...
在编程领域,序列化和反序列化是两个关键的概念,它们用于将对象的状态转换为可存储或可传输的格式,然后在需要时恢复为原始对象。Boost库提供了一个强大的工具——Boost.Serialization,来帮助程序员实现这个功能。...
在.NET框架中,序列化和反序列化是两个重要的概念,它们主要用于数据持久化、网络传输和跨进程通信。理解并熟练运用这些技术对于任何.NET开发者来说都是至关重要的。 序列化是将对象的状态(包括其属性和字段)转换...
在IT行业中,XML文件的序列化与反序列化是两个重要的概念,它们对于数据的存储、传输和处理起着关键作用。 **1. XML文件序列化** XML文件序列化是指将程序中的对象转换为XML格式的字符串或文件的过程。这个过程通常...
本篇文章将深入探讨C#和Java中的序列化与反序列化机制。 首先,我们要了解什么是序列化。序列化是指将对象的状态转化为可存储或可传输的数据格式的过程。这个过程通常将内存中的对象转换成字节流,以便保存到磁盘、...
这个文件可能包含多个Java源文件,每个文件都展示了一种特定的序列化或反序列化方法,以及相关的说明文档。 总的来说,理解和掌握序列化与反序列化对于任何IT专业人员都是必要的,因为它涉及到数据的保存、传输和...
6. **输入/输出流**:理解I/O流的概念,包括文件操作、字节流和字符流,以及缓冲区和对象序列化的应用。 7. **多线程**:学习线程的创建和同步机制,包括Thread类、Runnable接口、synchronized关键字、wait()、...