JCR创建单个文件,来自不同节点的链接

时间:2012-03-28 03:52:36

标签: jackrabbit jcr

我正在尝试为名称(例如A.gif)的图像创建单个文件节点。现在,我想在多个节点上重用该文件。有没有办法做到这一点? 作为一种解决方法,我正在为我的存储库中的不同路径重新创建文件节点,但这会导致文件重复。

4 个答案:

答案 0 :(得分:1)

如果你使用长耳兔,如果DataStore处于活动状态,复制文件节点(或者更确切地说是复制二进制属性)会很便宜。

该组件确保“大”二进制属性(具有可配置的大小阈值IIRC)仅基于其内容的摘要存储一次。

因此,在这种情况下,您可以多次复制相同的文件节点,而不必担心磁盘空间。

答案 1 :(得分:0)

我不确定我理解你的问题。但是,我要做的是将文件存储在一个位置,然后使用多个位置的path属性引用它。

假设您有以下节点结构

-content
 - articles
  - article1
  - article2
 - images
  - image1

您可以在每篇文章上设置一个名为imagePath的属性,该属性指向要显示的图像的路径,在本例中为/content/images/image1

答案 2 :(得分:0)

为了完整起见,请不要忘记references

Node imageNode = rootNode.addNode("imageNode");
imageNode.addMixin(JcrConstants.MIX_REFERENCEABLE);

Node node1 = rootNode.addNode("1");
node1.setProperty("image", imageNode);

Node node2 = rootNode.addNode("2");
node2.setProperty("image", imageNode);

session.save();

PropertyIterator references = imageNode.getReferences();
while (references.hasNext()) {
    Property reference = references.nextProperty();
    System.out.println(reference.getPath());
}

答案 3 :(得分:0)

nt:linkedFile类型仅用于此类用途。