2012-03-28 13 views
0

名前(たとえばA.gif)の画像の単一のファイルノードを作成しようとしています。今、私は複数のノードにファイルを再利用したい。これを行う方法はありますか? 回避策として、リポジトリ内の異なるパスのファイルノードを再作成していますが、その結果、ファイルが重複してしまいます。JCRは、単一のファイルを作成し、別のノードからのリンクを作成します。

答えて

0

私はあなたの問題を理解していません。しかし、私がやることは、ファイルを単一の場所に保存し、複数の場所からpathプロパティを使用して参照することです。

あなたはあなたが記事のそれぞれにこの場合/content/images/image1には、表示する画像のパスを指すimagePathという名前のプロパティを設定することができ、次のノード構造

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

を持っていると仮定します。

+0

こんにちは、私は何をしようとしています.1つの場所にファイルを保存し、複数の場所から参照してください。しかし、私は複数の場所から "パス"を設定する方法を把握することができませんか? – sfbay

+0

私の更新を見てください。返信、ロバートありがとう –

+0

。ありがとうございます – sfbay

1

ジャブラビットを使用している場合は、DataStoreがアクティブな場合、ファイルノードをコピーする(またはバイナリプロパティをコピーする)のが安いです。

このコンポーネントは、コンテンツのダイジェストに基づいて、(大規模な)バイナリプロパティ(設定可能なサイズのしきい値IIRC)が1回だけ格納されるようにします。

したがって、ディスク容量を気にせずに同じファイルノードを何度もコピーすることができます。

+0

返信ありがとう、bertrand。ありがとうございます – sfbay

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()); 
} 
+0

参照はDavidのモデル(http://wiki.apache.org/jackrabbit/DavidsModel#Rule_.235:_References_considered_harmful)で有害であるとみなされます。私は個人的にそれに同意しますが、意見はもちろん異なります。 –

+0

私は参照を使用しません:)完全性のためだけに言及していました。 – TedTrippin

+0

さて、絶対に意味があります;-) –

0

nt:linkedFileタイプは、使用のちょうどこの種のために作られました。

関連する問題