使用序列化在类加载器之间共享对象

时间:2013-02-13 11:42:07

标签: java serialization classloader

我有一个测试,在自定义类加载器中加载项目的某些模块(用于测试目的)。 这样的对象中的一个方法获取自定义对象作为参数,如果我将它从测试类(已由默认类加载器加载)传递给我的自定义类加载器加载的对象中的方法得到类型不匹配异常。

我原以为我可以避免这个问题,因为幸运的是我的自定义对象实现了Serializable(我想从测试类中对该对象进行serilizae,然后在我的自定义类加载器中对其进行反序列化并将其传递给该方法)。 但是,由于父类加载器加载的serilization utils类,生成的对象(反序列化输出)仍然是从默认的类加载器指向的。

如何在自定义类加载器中反序列化对象? 代码:

Class<?> serialClassDefinition = classLoader.loadClass("org.apache.commons.lang.SerializationUtils");
        final byte[] serializedDestData = SerializationUtils.serialize(sampleData);
        final Method deSerializeMethod = serialClassDefinition.getDeclaredMethod("deserialize", byte[].class);
        final Object oldSmapleData = deSerializeMethod.invoke(null, serializedSampleData);
        return (invoke(stringA, stringB, stringC, oldSampleData, isAAA));

0 个答案:

没有答案