JCR создает один файл, ссылку с разных узлов - PullRequest
0 голосов
/ 28 марта 2012

Я пытаюсь создать отдельный файловый узел для изображения с именем (скажем, A.gif).Теперь я хочу повторно использовать файл на нескольких узлах.Есть ли способ сделать это?В качестве обходного пути я заново создаю файловые узлы для разных путей в моем хранилище, но это приводит к дублированию файлов.

Ответы [ 4 ]

1 голос
/ 29 марта 2012

Если вы используете jackrabbit, копирование файлового узла (или, скорее, копирование двоичного свойства) будет дешевым, если активен DataStore .

Этот компонент гарантирует, что "большие" двоичные свойства (с настраиваемым порогом размера IIRC) сохраняются только один раз, на основе дайджеста их содержимого.

Таким образом, в этом случае вы можете копировать один и тот же файловый узел много раз, не беспокоясь о дисковом пространстве.

0 голосов
/ 20 апреля 2012

Тип nt: connectedFile был создан именно для этого вида использования.

0 голосов
/ 11 апреля 2012

И просто для полноты, не забудьте ссылки .

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());
}
0 голосов
/ 28 марта 2012

Я не уверен, что понимаю вашу проблему.Однако я хотел бы сохранить файл в одном месте, а затем сослаться на него, используя свойство path из нескольких мест.

Предположим, что у вас есть следующая структура узла

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

Вы можете установить для каждой из статей свойство с именем imagePath, которое указывает путь к отображаемому изображению, в данном случае /content/images/image1.

...