Java內容倉庫API,Apache Jackrabbit Oak 1.0.3 發布

jopen 10年前發布 | 22K 次閱讀 Apache Jackrabbit Oak

Apache Jackrabbit 是由 Apache Foundation 提供的 JSR-170 的開放源碼實現.
jlogo.gif

Apache Jackrabbit Oak 1.0.3 發布,此版本現已提供下載

Oak 1.0.3

改進

  [OAK-1966] - Add Hint for selecting more performant index in ...   [OAK-1967] - Avoid collision marker update when already present   [OAK-1983] - Query: reduce debug log output   [OAK-1986] - Log index names for which AsyncIndexUpdate would trigger a ...   [OAK-1987] - LuceneIndex should access Lucene Directory if query ...

Bug 修復

  [OAK-1816] - Oak#createContentRepository never unregisters some of its ...   [OAK-1964] - Performance degradation due to SessionDelegate.WarningLock   [OAK-1968] - Wrong time unit for async index lease time   [OAK-1969] - Duplicate observation events when using JackrabbitEventFilter   [OAK-1972] - Async property index update may fail on DocumentMK with more ...   [OAK-1973] - IndexUpdate traverses the data nodes under index nodes   [OAK-1975] - Wrong values reported for OBSERVATION_EVENT_DURATION   [OAK-1982] - Ordered index must ignore full-text queries   [OAK-1991] - Optimize access to OrderedPropertyIndex

此版本包括 Apache Jackrabbit Oak 1.0.2 版本的所有改進。更多更新內容請看。</pre>JSR-170把自己定義為一個能與內容倉庫互相訪問的,獨立的,標準的方式。同時它也對內容倉庫做出了自己的定義,它認為內容倉庫是一個高級的信息管理 系統,該系統是是傳統的數據倉庫的擴展,它提供了諸如版本控制、全文檢索,訪問控制,內容分類、訪問控制、內容事件監視等內容服務。


Java Content Repository 

API(JSR-170)試圖建立一套標準的API去訪問內容倉庫。如果你對內容管理系統(CMS)不熟悉的話,你一定會對內容倉庫是什么感到疑惑。你可 以這樣去理解,把內容倉庫理解為一個用來存儲文本和二進制數據(圖片,word文檔,PDF等等)的數據存儲應用程序。一個顯著的特點是你不用關心你真正 的數據到底存儲在什么地方,是關系數據庫?是文件系統?還是XML?不僅僅是數據的存儲和讀取,大多數的內容倉庫還提供了更加高級的功能,例如訪問控制, 查找,版本控制,鎖定內容等等。


一段時間以來市場上出現了各個廠家開發的不同的CMS系統,這些系統都建立在他們各自的內容倉庫之上。
問題出現了,每個CMS開發商都提供了他們自己的API來訪問內容倉庫。這對應用程序的開發者帶來了困擾,因為他們要學習不同的開發商提供的API,同時,他們的代碼也與這些特定的API產生了綁定。


JSR-170正是為解決這一問題而出現的,它提供了一套標準的API來訪問任何數據倉庫。通過JSR-170,你開發代碼只需要引用 javax.jcr.* 這些類和接口。它適用于任何兼容JSR-170規范的內容倉庫。


我們將通過一個 例子 來逐步了解JSR-170。


為什么需要 Java Content Repository API


隨著各個廠家各自的內容倉庫實現數量的增長,人們越來越需要一組通用的編程接口來使用這些內容倉庫,這就是JSR-170所要做的東西。它提供一組通用的 編程接口來連接內容倉庫。你可以把JSR-170理解為和JDBC類似的API,這樣你可以不依賴任何具體的內容倉庫實現來開發你的程序。你可以直接使用 支持JSR-170的內容倉庫;或者如果一些廠家的內容倉庫不支持JSR-170則可以通過這些廠家提供的JSR-170驅動來完成從JSR-170與廠 家特定的內容倉庫的轉換。


下面這張圖描述了使用JSR-170開發的應用系統的結構。在該系統運行的時候,它可以操作內容倉庫1,2,3中的任意一個。在這些內容倉庫當中,只有2 是直接支持JSR-170的,剩下的兩個都需要JSR-170驅動來和應用系統交互。注意:你的應用系統完全不用關心你的數據是如何存儲的。1可能使用了 關系數據庫來存儲,而2使用了文件系統,至于上,它甚至更前衛的使用了XML。


Java內容倉庫API,Apache Jackrabbit Oak 1.0.3 發布

JSR-170 API對不同的人員提供了不同的好處。

●對于開發者無需了解廠家的倉庫特定的API,只要兼容JSR-170就可以通過JSR-170訪問其倉庫。
●對于使用CMS的公司則無需花費資金用于在不同種類CMS的內容倉庫之間進行轉換。
●對于CMS廠家,無需自己開發內容倉庫,而專注于開發CMS應用。


JSR-170 是這樣定義內容倉庫的,內容倉庫由一組 workspace(工作空間)組成,這些workspace通常應該包含相似的內容。一個內容倉庫有一個到多個 workspace。每個workspace都是一個樹狀結構,都有一個唯一的樹根節點(root node)。樹上的item(元素)或者是個node(節點)或者是個property(屬性)。每個node都可以有零個到多個子節點和零個到多個子屬 性。只有根節點沒有父節點,其余所有的節點都有一個父節點。property 也必須有一個父節點,但它沒有子節點或是子屬性,property 是葉子元素。property是真正存儲數據的元素。

下圖描述了一個blog應用程序的內容倉庫模型。每個root node(根節點)的子節點都代表了一個blog實體。與這個blog實體有關的數據都存儲在 bolgEntry 節點的屬性里,其中一個 blogAttachment property 存儲了一個二進制圖片文件。
Java內容倉庫API,Apache Jackrabbit Oak 1.0.3 發布
根據內容倉庫實現的功能,JSR-170定義了三種級別:
Level 1:定義了一個只讀的內容倉庫。功能包括讀取內容,將內容導出為XML和查找內容。
Level 2:定義了可寫的內容倉庫。Level 2是Level 1的擴展,新增的功能包括往內容倉庫里寫入內容,和從XML導入數據到倉庫。
Advanced options:定義實現五種附加功能,版本控制、JTA、SQL查詢、清晰的內容鎖定和監視。

什么是Apache JackRabbit?
Apache JackRabbit是一個開放源碼的JSR-170 實現,實現了Level 2,但它還有許多擴展的功能。詳細可以去它的官方網站

</div>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!