我刚刚将一个轻量级解决方案Serializable InputStream推送到 Github,用于传递一个在概念上与RMIIOInputStream
非常相似的RMI 。这可能会解决您的问题。使用该库,您可以轻松地包装它以使其可序列化:InputStream
serializableStream = new SerializableInputStream(originalInputStream);
基本上,它利用在实现的类ObjectOutputStream
上调用特殊方法(如果存在)的行为Serializable
:
private void writeObject(java.io.ObjectOutputStream out) throws IOException;
private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException;
使用这些方法,SerializableInputStream
从委托读取的转发块到RMI 框架使用InputStream
的处理中。ObjectOutputStream
然后这些块在另一端被反序列化(进入内存缓存或临时文件 - 这是可配置的,取决于您的需要)。
至于你的要求...
“其中一些实际上确实代表了一个数据流,而不仅仅是一个文件”
...我相信,要么您需要进一步阐明您的需求,要么重新考虑 RMI 是否真的是适合您的用例的技术:我看不出如何通过基于方法调用的接口发送(可能永无止境的)数据流可以为你解决。