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