我正在尝试序列化具有 InputStream 的对象。我需要它以字节数组的形式到达 flex 客户端。
注意 - 我不能IExternalizable
在这个类上实现,因为它不是我的。
我已经注册了一个自定义BeanProxy
来进行转换,但是它似乎不起作用:
public class InputStreamBeanProxy extends BeanProxy {
@Override
public Object getInstanceToSerialize(Object instance) {
InputStream stream = (InputStream) instance;
Byte[] boxOfBytes;
try {
byte[] bytes = IOUtils.toByteArray(stream);
boxOfBytes = new Byte[bytes.length];
for (int i=0; i < bytes.length; i++)
{
boxOfBytes[i] = bytes[i];
}
} catch (IOException e) {
logger.error("Exception serializing inputStream: ", e);
throw new RuntimeException(e);
}
return boxOfBytes;
}
}
然后在启动期间注册此代理,如下所示:
PropertyProxyRegistry.getRegistry().register(InputStream.class, new InputStreamBeanProxy());
我在这段代码中设置了断点,我看到它被按预期调用。但是,当对象到达客户端时,输入流的类型为Object
,并且它不包含任何属性。
我究竟做错了什么?