<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    學習筆記

    Simple is beautiful.

    導航

    <2007年3月>
    25262728123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    統計

    公告

    ...

    常用鏈接

    留言簿(1)

    隨筆分類(2)

    隨筆檔案(56)

    Weblog

    搜索

    最新評論

    評論排行榜

    什么是JAVA內容倉庫(Java Content Repository)(2)


    內容倉庫模型

    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.內容倉庫主目錄:這個文件目錄下通常包含了所有的內容,搜索索引,內部配置文件和其他持久化信息。它的結構看起來會像下面這個樣子:
    ???c:/temp
    ????????
    |
    ????????
    |--Blogging
    ????????????????
    |
    ????????????????
    |-repository
    ????????????????
    |???????|
    ????????????????
    |???????|-index
    ????????????????
    |???????|-meta
    ????????????????
    |???????|-namespaces
    ????????????????
    |???????|-nodetypes?????????????
    ????????????????
    |
    ????????????????
    |-version
    ????????????????
    |
    ????????????????
    |-workspace
    ????????????????????????
    |
    ????????????????????????
    |--default

    ? 在上面的情況下,內容倉庫主目錄是c:/temp/Blogging.
    2.內容倉庫配置文件:一個典型的配置文件如下:
    <Repository>
    ?
    <FileSystem?class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
    ??
    <param?name="path"?value="${rep.home}/repository"/>
    ?
    </FileSystem>
    ?
    <Security?appName="Jackrabbit">
    ??
    <AccessManager?class="org.apache.jackrabbit.core.security.SimpleAccessManager"/>
    ??
    <LoginModule?class="org.apache.jackrabbit.core.security.SimpleLoginModule">
    ????
    <param?name="anonymousId"?value="anonymous"/>
    ??
    </LoginModule>
    ?
    </Security>
    ?
    <Workspaces?rootPath="${rep.home}/workspaces"?defaultWorkspace="default"/>
    ?
    <Workspace?name="${wsp.name}">
    ??
    <FileSystem?class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
    ???
    <param?name="path"?value="${wsp.home}"/>
    ??
    </FileSystem>
    ??
    <PersistenceManager?
    ????????
    class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
    ???
    <param?name="url"?value="jdbc:derby:${wsp.home}/db;create=true"/>
    ???
    <param?name="schemaObjectPrefix"?value="${wsp.name}_"/>
    ??
    </PersistenceManager>
    ??
    <SearchIndex?class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
    ???
    <param?name="path"?value="${wsp.home}/index"/>
    ??
    </SearchIndex>
    ?
    </Workspace>
    ?
    <Versioning?rootPath="${rep.home}/version">
    ??
    <FileSystem?class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
    ???
    <param?name="path"?value="${rep.home}/version"?/>
    ??
    </FileSystem>
    ??
    <PersistenceManager?
    ????????
    class="org.apache.jackrabbit.core.state.db.DerbyPersistenceManager">
    ???
    <param?name="url"?value="jdbc:derby:${rep.home}/version/db;create=true"/>
    ???
    <param?name="schemaObjectPrefix"?value="version_"/>
    ??
    </PersistenceManager>
    ??
    </Versioning>
    ??
    <SearchIndex?class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
    ???
    <param?name="path"?value="${rep.home}/repository/index"/>
    ??
    </SearchIndex>
    </Repository>

    ?
    ? 在這個配置文件里,<Repository>元素是根元素,它包含了下面這些元素:
    ? a,<FileSystem>: 該元素配置了內容倉庫的全局數據存儲位置,這些全局數據包括已注冊的命名空間,定制的節點類型等等。??? ??? JackRabbit 提供了幾種選擇,一種是像上面例子里配置的存儲在本地文件里,LocalFileSystem. 如果你想把它們存儲在數據庫里,你可以使用 DbFileSystem.
    ? b,<Security>:內容倉庫的安全配置,它有兩個子元素:<AccessManager>和<LoginModule>。<AccessManager>配置的類用來判斷用戶有沒有權限來對特定數據執行特定的操作。
    ? c,<Workspaces>:這個元素的配置對所有的workspace都通用。它的rootPath 屬性是所有workspace文件夾的根目錄,在我們的例子里它是c:/temp/Blogging/Workspace;defaultWorkspace 屬性則包含了workspace的默認名。
    ? d,<Workspace>:這個元素是所有workspace的默認配置模板。去每個workspace文件夾下你都會發現一個workspace.xml文件,這個文件和這個元素的配置一模一樣。三個子元素:<FileSystem>,和這個workspace相關數據的存儲位置;<PersistenceManager> ,這個workspace內容節點存儲策略;<SearchIndex>,可選,全文檢索。
    ? e,<Versioning>:配置一個版本相關的對象。其實JackRabbit也是把它作為節點來處理的。

    這兩個參數可以通過兩種方式設置,一種是在倉庫實例創建時直接傳到Jackrabbit里去,一種是間接的通過設置JNDI object factory。
    你可以設置org.apache.jackrabbit.repository.home 這個系統屬性的值來指定你的內容倉庫主目錄;也可以設置
    org.apache.jackrabbit.repository.conf 這個系統屬性的值來指定你的內容倉庫配置文件repository.xml。如果你不設定這兩個
    參數,Jackrabbit會把當前目錄作為內容倉庫主目錄,同時,它有一個默認的內容倉庫配置文件。

    posted on 2007-03-19 01:01 Ecko 閱讀(301) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 无码A级毛片免费视频内谢| 在线观看肉片AV网站免费| 日韩在线播放全免费| 久久久久久亚洲精品| 另类免费视频一区二区在线观看| 亚洲乱色熟女一区二区三区丝袜| 波霸在线精品视频免费观看| 亚洲人精品午夜射精日韩| 3344在线看片免费| 亚洲AV无码久久| 四虎免费影院ww4164h| 亚洲熟女综合一区二区三区| 好男人视频在线观看免费看片| 亚洲av永久无码精品秋霞电影秋| 国产乱子伦片免费观看中字| 色哟哟国产精品免费观看| 中文字幕在亚洲第一在线| 免费观看成人久久网免费观看| 亚洲国产成人va在线观看网址| 成年女人毛片免费播放人| 免费一级全黄少妇性色生活片 | 国产一级婬片A视频免费观看| 国产亚洲精品岁国产微拍精品| 91精品啪在线观看国产线免费| 亚洲国产乱码最新视频| 免费日本黄色网址| 免费国产午夜高清在线视频 | 亚洲性天天干天天摸| 97人妻无码一区二区精品免费| 亚洲精品无码久久久久久| 亚洲精品天堂成人片?V在线播放 | 最近免费中文字幕mv在线电影 | 亚洲欧美日韩国产成人| 国产亚洲午夜高清国产拍精品| 91青青青国产在观免费影视| 狠狠综合亚洲综合亚洲色| 亚洲AV无码成人专区片在线观看| 一二三四免费观看在线视频中文版 | AAAAA级少妇高潮大片免费看| 亚洲美女视频一区| 亚洲av区一区二区三|