簡體   English   中英

JCR存儲庫同步API

[英]JCR Repository Synchronization API

我正在尋找一個API來同步兩個不同的JCR存儲庫。

  • 同步將經常進行(例如每1小時)。
  • 只有指定的子樹必須同步。
  • 存儲庫是主存儲庫,另一個存儲庫是從存儲庫
  • 從屬存儲庫是read-onley,必須在緊急情況下可訪問。

有沒有API可以進行這樣的同步操作?

任何建議表示贊賞。

在任何JCR實現中只使用JCR API,我可以想到幾種方法:

  1. 在主存儲庫上創建並注冊事件監聽器,監視在特定感興趣的子樹上發生的事件,然后以某種持久化形式記錄這些事件(例如,在隊列,文件系統,第三個存儲庫等等......等等在您的環境中效果最佳)。 然后定期處理這些記錄的事件,並通過操縱從屬存儲庫中的節點來“重放”它們。
  2. 在主存儲庫上創建並注冊事件偵聽器,以監視在特定感興趣的子樹上發生的事件,然后立即連接到從屬存儲庫並“重放”這些事件。
  3. 定期連接到主存儲庫並使用日記功能(如果支持)獲取自上次完成以來主存儲庫中已更改的內容,然后連接到從屬存儲庫並“重放”適用於特定事件的事件感興趣的子樹。

另一種選擇可能是通過聚類來使主存儲庫和從屬存儲庫完全同步。 Jackrabbit和ModeShape都可以這樣做,但它們都完全不同,因為它沒有在JCR規范中定義。

例如,使用ModeShape (披露:我是項目負責人),您可以創建僅包含2個流程的小型集群或具有許多流程的更大集群。 您可以預先選擇群集中的每個進程是否具有所有內容的完整副本(即“已復制”和“無效”模式)或僅包含某些內容(即“分布式”模式)。 有關詳細信息,請參閱文檔 這些集群還可以跨越多個站點,有助於提高容錯能力。 ModeShape具有彈性,因此您可以隨時向集群添加更多進程,甚至可以刪除它們。 最好的部分是客戶端應用程序仍然只使用JCR API,但是看到整個存儲庫內容就像它們是非集群存儲庫一樣。

(全新且尚未發布的) Apache Sling復制模塊開箱即用。 它需要在您的存儲庫之上運行Sling,但這相當輕量級並為JCR應用程序帶來了許多有用的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM