什麼是JAVA內容倉庫(Java Content Repository)(2) – JAVA編程語言程序開發技術文章

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

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

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

下面我們決定用Apache JackRabbit來作為我們示例程序的內容倉庫。

如何配置Apache JackRabbit
JackRabbit需要兩個參數來配置一個內容倉庫實例。
1.內容倉庫主目錄:這個文件目錄下通常包含瞭所有的內容,搜索索引,內部配置文件和其他持久化信息。它的結構看起來會像下面這個樣子:

<!–

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

–>   c:/temp
        |
        |–Blogging
                |
                |-repository
                |       |
                |       |-index
                |       |-meta
                |       |-namespaces
                |       |-nodetypes             
                |
                |-version
                |
                |-workspace
                        |
                        |–default
  在上面的情況下,內容倉庫主目錄是c:/temp/Blogging.
2.內容倉庫配置文件:一個典型的配置文件如下:

<!–

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

–><Repository>
 <FileSystem class=”org.apache.jackrabbit.core.fs.local.LocalFileSystem”>
  <param name=”path” value=”${rep.home}/repository”/>
 </FileSystem>
 <Security appName=”Jackrabbit”><SPAN style="CO

發佈留言