2

我最近一直在使用恰好使用 JCR 的 Magnolia CMS。

我面临的问题之一是 JCR 数据损坏,我发现我对如何解决这种情况知之甚少。

我对JCR的理解如下:

  1. JCR是一个规范,有几种实现
  2. Jackrabbit 是一种 JCR 实现
  3. Jackrabbit 可以直接使用文件系统或使用 MySQL 等数据库存储信息

现在我的问题是

  1. 如何备份和恢复 JCR 存储库?
  2. 是否有任何特定工具可用于检查给定 JCR 的完整性并尝试修复它?我一直在玩 toromiro。
  3. 是否有任何特定的信息/教程资源可供我阅读以全面正确地理解 JCR 技术?

更新:

我还有一些其他问题:

  1. 如果给定的 JCR 实现将内容存储在数据库中,我是否可以期望所有内容都存储在该数据库中,或者某些内容(即图像)是否会直接存储在文件系统而不是数据库中?
  2. 目前我们有一个由三个不同的网络服务器访问的 JCR 存储库,据我了解,JCR 规范考虑了这种情况并保护了存储库,以防止由于并发写入访问导致的内容不一致。它是否正确?
  3. 具体来说,我们遇到的问题是节点 A 包含对节点 B 的引用,但节点 B 不可访问,在使用 groovy 脚本后,我们设法删除了节点 B(似乎处于不一致状态)但是,我们如何找到对节点 B 的所有引用(可能不仅节点 A 引用了它,而且节点 C 也引用了它)。到底是什么原因导致 JCR 回购变得腐败?,顺便说一句,我们还尝试使用 forceConsistencyCheck、autorepair 和 enableConsistencyCheck 标志,但没有解决问题。

谢谢

4

1 回答 1

2

你对JCR的理解是正确的:它是一个已经被多个项目(包括Jackrabbit、ModeShape、Alfresco、eXo等)实现的规范。事实上,JCR 有多个版本(1.0、2.0 和很快的 2.1),并不是所有的实现都支持所有的 JCR 版本。

(全面披露:我是 ModeShape 的创始人和领导者。)

没有标准或通用的方法来备份 JCR 存储库,但其中一些实现提供了自己的机制。例如,如果所有内容都存储在 DBMS 中,那么您可以使用 DBMS 备份和恢复功能。Jackrabbit 有自己的备份机制ModeShape 也是如此

你在做什么样的完整性检查,Toromino 是如何做到的?JCR 实现不应允许保存任何违反已定义约束的内容(例如,具有属性和子节点定义的节点类型定义),并且它们限制(在不同程度上)如何更改这些节点定义。

我不知道有什么出色的 JCR 书籍或在线资源,但请查看Jackrabbit 文档ModeShape 文档

于 2014-02-18T16:55:46.797 回答