前の議論で提案されているように、Jackrabbit に pdf ファイルを保存するためにデータベースの代わりにファイル システムを使用すると、データベースの代わりにファイル システムに blob ファイルを保存するために
使用できFileDataStore
ます (私の場合、100 kb サイズの pdf が保存されています)。
私が直面した次の問題は、以前にブロブストアに保存されていたファイルを処理することであり、に切り替えた後にそれらにアクセスできるようにしたいFileDataStore
.
メソッドFileDataStore
を使用するときにrepository.xmlにサポートを追加した後、次のようになります。JcrUtils
getOrAddNode
ItemExistsException
public static Node getOrAddNode(Node parent, String name)
throws RepositoryException {
if (parent.hasNode(name)) {
return parent.getNode(name);
} else {
return parent.addNode(name);
}
}
たとえばparent.hasNode(name)
、false を返します (アイテムが存在しないようです) が、parent.addNode(name)
結果として ItemExistsException をスローするコードに陥ります。
何か助けはありますか?
blob の移行を続行する必要がありますか、FileDataStore
または jackrabbit が同時に異なる場所で blob を検索できるような構成があります: 私の場合は mysql データベースとファイルシステムです。
いくつかのコメント:
移行作業を行うのに役立つ方法が少なくともいくつか見つかりました。
- 仕様http://wiki.apache.org/jackrabbit/BackupAndMigration
は、JCR API の使用 (
Session.exportSystemView(..)
およびSession.importXML(..)
)、RepositoryCopier
API の使用などについて説明しています。 - jackrabbit-jcr-import-export-tool ( http://svn.apache.org/repos/asf/jackrabbit/sandbox/jackrabbit-jcr-import-export-tool/README.txtを参照)
- jackrabbit スタンドアロン サーバーを使用する ( http://jackrabbit.apache.org/standalone-server.html )