我需要在Jackrabbit存储库中编写大文件。为了避免内存问题,我想在小字节数组中从客户端发送数据,而有状态bean会在某种流中将它们写入存储库。
P.S。抱歉英语很差。
答案 0 :(得分:0)
在JCR 2.0中,您可以通过
创建二进制属性Node.setProperty(java.lang.String name,Binary value)
方法,Binary有一个getInputStream()方法,可用于提供内容流。
这意味着如果存储库实现支持流式传输以及正确设置整个链,您应该能够直接从客户端流式传输到存储库。我假设Apache Jackrabbit在这种情况下确实支持流式传输,但您可能需要根据您使用的版本进行检查。
我认为JCR不支持将流附加到现有属性,因此如果您绝对需要跨多个请求从客户端发送数据,则需要在多个客户端请求中保持长期的JCR会话,并且从您从客户端获得的数据中提取Binary的流,以小块为单位。这看起来比直接流式传输更复杂,但也应该有效。