0 0

请问用web service直接传输序列化的java对象妥当不妥当?0

刚接触web service,对web service的了解程度仅限于知道,通过web service可以实现远程方法的调用,其它几乎一无所知。
不像rmi,我发现web service调用方法的时候,必须在方法参数中显示申明参数的类型,貌似不支持多态?
为了让它支持多态,我简单的创建了这样一个java类:


@XmlAccessorType(XmlAccessType.FIELD)
public class TransferModel {

	public TransferModel() {

	}

	public TransferModel(Object obj) {
		this.setObject(obj);
	}

	private byte[] bytes;

	private Class<?> objClass;

	public void setObject(Object obj) {
		this.objClass = obj.getClass();
		ByteArrayOutputStream bo = null;
		ObjectOutputStream oo = null;
		try {
			bo = new ByteArrayOutputStream();
			oo = new ObjectOutputStream(bo);
			oo.writeObject(obj);
			bytes = bo.toByteArray();
		} catch (Exception e) {
			throw new RuntimeException(e.getMessage(), e);
		} finally {
			try {
				bo.close();
				oo.close();
			} catch (Exception e) {
				throw new RuntimeException(e.getMessage(), e);
			}
		}
	}

	public Object getObject() {
		if (bytes == null) {
			return null;
		}
		ByteArrayInputStream bin = null;
		ObjectInputStream objIn = null;
		try {
			bin = new ByteArrayInputStream(bytes);
			objIn = new ObjectInputStream(bin);
			return objIn.readObject();
		} catch (Exception e) {
			throw new RuntimeException(e.getMessage(), e);
		} finally {
			try {
				bin.close();
				objIn.close();
			} catch (Exception e) {
				throw new RuntimeException(e.getMessage(), e);
			}
		}

	}

	public Class<?> getObjectClass() {
		return objClass;
	}
}

这里,我把java对象序列化为二进制数据,再通过web service进行传输,请问这样做会不会带来问题?
2012年8月04日 14:54

2个答案 按时间排序 按投票排序

0 0

传递序列化的对象时可以的,不过,这样没啥意义和好处。
只传递一个对象的话,完全可以传递一个XML文件,文件里包含这个对象的所有属性值,这样接收方也好接收和解析。如果是传递多个对象的话,你的序列化就不太好使了,这时候就需要传递序列的LIST等对象,个人建议不要使用。还是传递XML文件比较好

2012年8月08日 16:43
0 0

webservice原理:
传递数据:xml
传输协议:soap(soap=http+xml。基于http协议传输xml数据)
任何接口交互,只要搞清楚以上两点就融会贯通了。
如果想比较深入了解webservice,可参考我的博文(基于axis的源码分析)
http://dead-knight.iteye.com/blog/731024

2012年8月05日 22:39

相关推荐

    java对象序列化和反序列化

    Java对象序列化与反序列化是Java编程中重要的概念,主要应用于数据持久化、网络传输以及存储等场景。本文将详细解析这两个概念及其在实际应用中的实现方式。 **一、Java对象序列化** 1. **定义**: Java对象序列化...

    web service 中的序列化

    ### Web Service 中的序列化详解 #### 序言 序列化是计算机科学中的一个重要概念,尤其是在Web服务领域,它指的是将复杂的数据结构或者对象状态转换为可以存储或传输的格式的过程;而反序列化则是其逆过程,即将...

    关于 Java 对象序列化您不知道的 5 件事

    Java对象序列化是Java平台的一项重要特性,它允许将对象的状态转换为字节流,以便存储、传输或恢复。在本文中,我们将深入探讨关于Java对象序列化你可能不知道的五件事情,这些知识点对于理解和优化你的Java应用程序...

    Java对象序列化和反序列化工具Xson.zip

    Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven:  &lt;groupId&gt;com.github.xsonorg&lt;/groupId&gt;  &lt;artifactId&gt;xson-core  &lt;version&gt;1.0.1 ...

    java对象序列化 传输 保存

    Java对象序列化是一种将Java对象转换为字节流的过程,以便可以存储这些对象或通过网络进行传输。这个过程是Java平台的核心特性,它允许开发者将复杂的对象结构持久化或者在网络间进行安全通信。序列化不仅可以用于...

    java 对象序列化

    Java对象序列化是一种将Java对象转换为字节流的过程,以便可以存储在磁盘上、在网络上传输或在任何其他需要持久化数据的场景中使用。这个过程涉及到两个主要概念:序列化(Marshalling)和反序列化(Unmarshalling)...

    第38天:WEB漏洞-反序列化之PHP&JAVA全解(下)1

    这里使用了ysoserial工具,它可以生成能够执行特定命令的序列化对象。在生成payload后,可以将它编码为base64并传递给目标应用,从而触发反序列化。 0x05部分,攻击者设置了一个监听器等待反序列化数据的触发,通过...

    java对象序列化.ppt

    Java对象序列化是一种将对象转换为字节流的过程,以便可以将其存储在磁盘上,或者在网络中进行传输。这是Java平台提供的一种功能,允许程序员将任何Java对象持久化,即将其状态保存到磁盘,或者在网络中进行传输。...

    C#和Java的序列化反序列化

    而在Java中,我们可以通过实现`Serializable`接口来使类支持序列化,或者使用`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`进行对象的序列化和反序列化。 接下来,我们讨论反序列化。反序列化是序列...

    java序列化和反序列化的方法

    Java 序列化和反序列化是 Java 语言中的一种机制,用于将对象转换为字节流,以便在网络上传输或存储。序列化是将对象转换为字节流的过程,而反序列化是将字节流转换回对象的过程。 在 Java 中,序列化和反序列化是...

    Java对象的序列化与反序列化Java开发Java经验技巧

    Java对象的序列化与反序列化是Java编程中一项重要的技术,它允许我们将Java对象转换为字节流,便于存储、传输或者在网络间传递。这一过程对于数据持久化、跨进程通信(如RMI,Remote Method Invocation)以及分布式...

    java反序列化工具

    在Java应用程序中,序列化用于保存对象的状态以便稍后恢复,或者在网络间传输对象。然而,这个过程也可能引入安全风险,因为不安全的反序列化可能导致远程代码执行(RCE)漏洞。 在给定的标题和描述中,提到了几个...

    JAVA对象序列化保存为XML文件的工具类

    在Java编程中,对象序列化是一种将对象的状态转换为字节流的过程,以便可以存储或在网络上传输。而在反序列化时,这个字节流又可以恢复为原来的对象。Java提供了一个方便的机制来实现这一点,即`java.io....

    json序列化与反序列化处理代码(java版本)

    极好的序列化与发序列化代码。可以处理array集合,数组或者单个对象等的序列化与反序列化。

    Java对象的序列化和反序列化实践

    在Java编程语言中,对象的序列化和反序列化是两个关键的概念,它们对于数据存储、网络传输以及持久化有着重要的作用。这篇文章将深入探讨这两个主题,并通过实践例子来阐述其工作原理。 **序列化(Serialization)*...

    Java序列化_Java序列化结构_

    Java序列化是Java平台中的一种持久化机制,它允许对象的状态被转换成字节流,以便存储、网络传输或在不同时间点恢复。这个过程被称为序列化,而反向操作称为反序列化。序列化在许多场景下都非常有用,比如在分布式...

    java序列化对象传给php

    android(包括java)序列化一个对象传给php去做处理,或是接到php的序列化的对象在java中做处理的工具jar包以及使用方法. 使用方法: byte[] b = null; b = PHPSerializer.serialize(一个对象);//将一个对象序列化后返回...

    Java对象序列化的秘密

    Java对象序列化是Java平台提供的一种机制,允许将对象的状态转换为字节流,以便存储在磁盘上、通过网络传输或在不同时间点恢复。这个过程涉及到将一个复杂的Java对象模型转换为简单的二进制表示,使得数据可以在不同...

    对象的序列化和反序列化

    对象的序列化和反序列化是Java编程语言中重要的概念,它们主要用于持久化对象的状态,以便在需要时能够恢复。序列化是将一个对象转换为字节流的过程,而反序列化则是将字节流还原为原来的对象。这两个过程在许多场景...

    JAVA对象的序列化与反序列化详细PPT课件.pptx

    Java对象的序列化和反序列化是Java编程中的一项重要技术,主要应用于数据持久化、网络传输等场景。本课件详细介绍了这一概念及其在实际应用中的操作。 首先,序列化是将Java对象转化为字节序列的过程,目的是为了...

Global site tag (gtag.js) - Google Analytics