使用XStream流式传输未知(可能非常大)数量的Java对象
我试图使用XStream在两个进程(本质上是JVM)之间传输对象。我发现以前在这个论坛上也有人问过类似的问题(请参考下面的链接) 我的要求与上述问题中给出的解决方案之间的基本区别在于,在流操作开始时,所有流对象都不可用。我希望发送过程等待新对象,并在它们出现时将其流式传输。因此,此操作可能需要很长时间(在两个对象的流之间有大量空闲时间) 另一方面,在上面给出的解决方案中,如果我们在一开始就知道所有集合元素,那么效果会很好使用XStream流式传输未知(可能非常大)数量的Java对象,java,xml,stream,xstream,Java,Xml,Stream,Xstream,我试图使用XStream在两个进程(本质上是JVM)之间传输对象。我发现以前在这个论坛上也有人问过类似的问题(请参考下面的链接) 我的要求与上述问题中给出的解决方案之间的基本区别在于,在流操作开始时,所有流对象都不可用。我希望发送过程等待新对象,并在它们出现时将其流式传输。因此,此操作可能需要很长时间(在两个对象的流之间有大量空闲时间) 另一方面,在上面给出的解决方案中,如果我们在一开始就知道所有集合元素,那么效果会很好 请告诉我是否有人以前遇到过这样的要求,并且能够解决它。将问题分为两部分:
请告诉我是否有人以前遇到过这样的要求,并且能够解决它。将问题分为两部分:
对于第2部分,将对象放在自己的文档中似乎比将它们全部放在一个文档中更简洁。这应该可以通过XStream直接实现。如果您需要类似于发送最外层文档的最终结束标记的“完成”概念,那么在适当的时候发送自定义的“完成”消息。谢谢您的回复。这个问题现在已经解决了。我在客户端使用了用于XStream的StAX驱动程序,并确保服务器立即发送XML文档prolog(而不是等待实际事件发生)。如果您仍在使用长时间运行的连接,则只需确保您知道如果网络/连接出现故障且流式数据中断,会发生什么情况。我怀疑斯塔克斯的司机不会高兴的。哦,是的。我正在客户端缓存最后看到的对象id。因此,在网络/连接失败的情况下,它只需重新连接到服务器并发送最后看到的对象id。然后,服务器将通过发送客户端看到的对象之后的剩余对象来响应。