Comme proposé dans la discussion précédente Using file system instead of database to store pdf files in jackrabbit nous pouvons utiliser FileDataStore
pour stocker des fichiers blob dans le système de fichiers au lieu de la base de données (i mon cas ont stocké ~ 100 kb taille pdfs) .Migration des blobs de base de données du système de fichiers dans Jackrabbit
Le problème suivant que j'ai rencontré traite des fichiers qui ont été précédemment stockés dans blobstore et je veux qu'ils soient accessibles après le passage à FileDataStore
.
Après avoir ajouté FileDataStore
support à la repository.xml JcrUtils
lors de l'utilisation méthode getOrAddNode
i obtenir ItemExistsException
:
public static Node getOrAddNode(Node parent, String name)
throws RepositoryException {
if (parent.hasNode(name)) {
return parent.getNode(name);
} else {
return parent.addNode(name);
}
}
par exemple, parent.hasNode(name)
fausses déclarations (il semble que l'élément n'existe pas) mais nous tombons au code parent.addNode(name)
qui jette par conséquent ItemExistsException.
Une aide?
Est-il nécessaire de procéder à la migration des blobs vers le FileDataStore
ou il existe une sorte de configuration que jackrabbit pourrait rechercher des blobs dans différents endroits en même temps: dans mon cas, base de données mysql et système de fichiers.
Quelques commentaires:
Je l'ai trouvé au moins plusieurs façons qui pourraient aider à faire le travail de migration:
- spec http://wiki.apache.org/jackrabbit/BackupAndMigration dit sur l'utilisation de l'API JCR (
Session.exportSystemView(..)
puisSession.importXML(..)
), en utilisantRepositoryCopier
API etc. - jackrabbit-jcr-importation-exportation-outil (voir http://svn.apache.org/repos/asf/jackrabbit/sandbox/jackrabbit-jcr-import-export-tool/README.txt)
- en utilisant jackrabbit stand serveur seul (http://jackrabbit.apache.org/standalone-server.html)