当前位置:编程学习 > 网站相关 >>

MQ队列可以存放java对象吗?

我想把一个JavaBean对象通过QUEUE传送。是否可行?如何处理? --------------------编程问答-------------------- 序列化 Serialization.
ByteArrayOutputStream cache = new ByteArrayOutputStream();
new ObjectOutputStream(cache).write(me);

byte[] encoded = cache.toByteArray();

...

序列化要求对方 JVM 的当前要用的 ClassLoader 能加载这个 class 文件了。事先复制过去给对方。


--------------------编程问答-------------------- me指的就是一个实例吧?
你说的“事先复制过去给对方”,是跟他约定了用什么类来转换?对方也需要拥有这个类? --------------------编程问答-------------------- 这个例子就需要 Person 类事先发给对方,
或者对方的代码中有类似如下部分:
URLClassLoader loader = new URLClassLoader(new URL[]{"http://你的机器的一个服务器,给它下载/classes/"}, parentClassLoader);

System.setSecurityManager(...);

Thread.currentThread().setContextClassLoader();

有些 API 会自动读取 Context Class Loader,你的对方使用的是类似的办法那么可以用这个远程类加载,跨网络,但要事先提交 Security Manager,否则还是手工把 class 复制给对方比较省事。

RMI / JINI 就是使用类似的跨网络自动加载类的机制。

Person me = new Person();

序列化 Serialization.
ByteArrayOutputStream cache = new ByteArrayOutputStream();
new ObjectOutputStream(cache).write(me);

byte[] encoded = cache.toByteArray();

补充:企业软件 ,  WebSphere
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,