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

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

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

    posts - 193,  comments - 520,  trackbacks - 0
    內(nèi)容倉庫模型
    JSR-170 是這樣定義內(nèi)容倉庫的,內(nèi)容倉庫由一組 workspace(工作空間)組成,這些workspace通常應(yīng)該包含相似的內(nèi)容。一個(gè)內(nèi)容倉庫有一個(gè)到多個(gè) workspace。每個(gè)workspace都是一個(gè)樹狀結(jié)構(gòu),都有一個(gè)唯一的樹根節(jié)點(diǎn)(root node)。樹上的item(元素)或者是個(gè)node(節(jié)點(diǎn))或者是個(gè)property(屬性)。每個(gè)node都可以有零個(gè)到多個(gè)子節(jié)點(diǎn)和零個(gè)到多個(gè)子屬性。只有根節(jié)點(diǎn)沒有父節(jié)點(diǎn),其余所有的節(jié)點(diǎn)都有一個(gè)父節(jié)點(diǎn)。property 也必須有一個(gè)父節(jié)點(diǎn),但它沒有子節(jié)點(diǎn)或是子屬性,property 是葉子元素。property是真正存儲(chǔ)數(shù)據(jù)的元素。

    下圖描述了一個(gè)blog應(yīng)用程序的內(nèi)容倉庫模型。每個(gè)root node(根節(jié)點(diǎn))的子節(jié)點(diǎn)都代表了一個(gè)blog實(shí)體。與這個(gè)blog實(shí)體有關(guān)的數(shù)據(jù)都存儲(chǔ)在 bolgEntry 節(jié)點(diǎn)的屬性里,其中一個(gè) blogAttachment property 存儲(chǔ)了一個(gè)二進(jìn)制圖片文件。
    repositorymodel3.gif
    根據(jù)內(nèi)容倉庫實(shí)現(xiàn)的功能,JSR-170定義了三種級(jí)別:
    Level 1:定義了一個(gè)只讀的內(nèi)容倉庫。功能包括讀取內(nèi)容,將內(nèi)容導(dǎo)出為XML和查找內(nèi)容。
    Level 2:定義了可寫的內(nèi)容倉庫。Level 2是Level 1的擴(kuò)展,新增的功能包括往內(nèi)容倉庫里寫入內(nèi)容,和從XML導(dǎo)入數(shù)據(jù)到倉庫。
    Advanced options:定義實(shí)現(xiàn)五種附加功能,版本控制、JTA、SQL查詢、清晰的內(nèi)容鎖定和監(jiān)視。

    什么是Apache JackRabbit?
    Apache JackRabbit是一個(gè)開放源碼的JSR-170 實(shí)現(xiàn),實(shí)現(xiàn)了Level 2,但它還有許多擴(kuò)展的功能。詳細(xì)可以去它的官方網(wǎng)站。

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

    如何配置Apache JackRabbit
    JackRabbit需要兩個(gè)參數(shù)來配置一個(gè)內(nèi)容倉庫實(shí)例。
    1.內(nèi)容倉庫主目錄:這個(gè)文件目錄下通常包含了所有的內(nèi)容,搜索索引,內(nèi)部配置文件和其他持久化信息。它的結(jié)構(gòu)看起來會(huì)像下面這個(gè)樣子:
    ???c:/temp
    ????????
    |
    ????????
    |--Blogging
    ????????????????
    |
    ????????????????
    |-repository
    ????????????????
    |???????|
    ????????????????
    |???????|-index
    ????????????????
    |???????|-meta
    ????????????????
    |???????|-namespaces
    ????????????????
    |???????|-nodetypes?????????????
    ????????????????
    |
    ????????????????
    |-version
    ????????????????
    |
    ????????????????
    |-workspace
    ????????????????????????
    |
    ????????????????????????
    |--default

    ? 在上面的情況下,內(nèi)容倉庫主目錄是c:/temp/Blogging.
    2.內(nèi)容倉庫配置文件:一個(gè)典型的配置文件如下:
    <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>

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

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

    http://www.tkk7.com/ronghao 榮浩原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處:)
    posted on 2007-01-23 23:57 ronghao 閱讀(6817) 評(píng)論(25)  編輯  收藏 所屬分類: 工作日志 、cms

    FeedBack:
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-01-25 10:39 | 饒志華
    有無JSR-170 的中文版?  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-01-25 20:58 | ronghao
    呵呵 如果你有,麻煩隨便給我也發(fā)一份:)  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-21 10:29 | 無名小卒
    配置存儲(chǔ)在數(shù)據(jù)庫里怎么配啊?  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-21 12:03 | ronghao
    <PersistenceManager>節(jié)點(diǎn)屬性可以配置  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-21 15:22 | 無名小卒
    請(qǐng)問倉庫除了存儲(chǔ)和提供數(shù)據(jù),還有其它的能力嗎?比如訪問控制工作流之類的?  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-21 18:19 | ronghao
    權(quán)限控制這塊做的很弱。我覺得主要是提供了一種很爽的數(shù)據(jù)存儲(chǔ)模型,樹結(jié)構(gòu),符合編程習(xí)慣。另外就是內(nèi)置了版本管理以及全文檢索。  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-22 08:56 | 無名小卒
    在實(shí)際開發(fā)中,它只能做為存儲(chǔ)單元,與前臺(tái)的門戶和后面的工作流是怎么結(jié)合的呢?它有沒有接口直接訪問別人提供的數(shù)據(jù)內(nèi)容展現(xiàn)給門戶!!  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)[未登錄]
    2007-06-22 09:54 | ronghao
    你可以把它理解等同為數(shù)據(jù)庫,你從里面獲取和存儲(chǔ)數(shù)據(jù)而已,與前臺(tái)的門戶和后面的工作流的結(jié)合都不是它而是開發(fā)人員所要操心的事情。  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-22 10:03 | 無名小卒
    好的,謝謝!!那jcr提供的那些接口,比如rmi,net是做什么用啊?  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)[未登錄]
    2007-06-22 17:07 | ronghao
    我沒用到過。猜想的話,應(yīng)該是提供遠(yuǎn)程訪問。  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-25 16:40 | 無名小卒
    想把數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫里,除了配置使用DbFileSystem.還需要怎么配置啊?還有數(shù)據(jù)庫結(jié)構(gòu)怎么定義?太麻煩你了哈,剛接觸這個(gè)!想認(rèn)真學(xué)習(xí)一下,又找不到相關(guān)的文檔!  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)[未登錄]
    2007-06-26 22:43 | ronghao
    @無名小卒
    不需要再配置,jackrabbit會(huì)在第一次初始化的時(shí)候自動(dòng)生成相關(guān)的數(shù)據(jù)庫表:)  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-27 09:36 | 無名小卒
    哦,是這樣哦!就只要配置Repository.xml里的filesystem節(jié)點(diǎn)就行了是不?
    :)  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-27 09:39 | 無名小卒
    還有這個(gè)DBFILESYSTEM支持所有的數(shù)據(jù)庫嗎?  回復(fù)  更多評(píng)論
      
    # 報(bào)錯(cuò),搞不懂了
    2007-06-27 10:10 | 無名小卒
    ERROR - failed to initialize file system
    java.sql.SQLException: ORA-00906: 缺少左括號(hào)

    at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
    at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
    at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
    at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
    at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
    at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
    at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
    at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:796)
    at org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.checkSchema(DatabaseFileSystem.java:1166)
    at org.apache.jackrabbit.core.fs.db.DatabaseFileSystem.init(DatabaseFileSystem.java:181)
    at org.apache.jackrabbit.core.config.FileSystemConfig.createFileSystem(FileSystemConfig.java:47)
    at org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:239)
    at org.apache.jackrabbit.core.RepositoryImpl.create(RepositoryImpl.java:584)
    at org.apache.jackrabbit.core.TransientRepository$2.getRepository(TransientRepository.java:245)
    at org.apache.jackrabbit.core.TransientRepository.startRepository(TransientRepository.java:265)
    at org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:333)
    at org.apache.jackrabbit.core.TransientRepository.login(TransientRepository.java:388)
    at com.test.common.JcrBase.<clinit>(JcrBase.java:26)
    at com.example.FourHop.addN(FourHop.java:34)
    at com.example.FourHop.main(FourHop.java:20)
    Exception in thread "main" java.lang.NullPointerException
    at com.example.FourHop.addN(FourHop.java:38)
    at com.example.FourHop.main(FourHop.java:20)
      回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-27 10:43 | 無名小卒
    成功了!!  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-27 14:46 | 無名小卒
    唉,還沒搞懂啊!!里面有幾個(gè)FILEsystem節(jié)點(diǎn),該怎么配置啊? 數(shù)據(jù)還是存在文件系統(tǒng)里,能不能給我你做的DEMO看看!謝謝!!QQ:20367120  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-27 17:29 | 無名小卒
    數(shù)據(jù)庫里創(chuàng)建了三張表,但是數(shù)據(jù)還是存在本地系統(tǒng)的文件里面得!搞不懂怎么使用了!  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)[未登錄]
    2007-06-28 09:40 | ronghao
    有一篇文章可以參考,包括一個(gè)代碼實(shí)例shttp://www.onjava.com/pub/a/onjava/2006/11/08/advanced-java-content-repository.html  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-28 11:38 | 無名小卒
    怎么都看不到關(guān)于全用數(shù)據(jù)庫存儲(chǔ)的東西哦!!
    他的示例也是文件系統(tǒng):
    System.setProperty("org.apache.jackrabbit.repository.home","c:/temp/Blogging");  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-28 15:07 | 無名小卒
    <PersistenceManager class="org.apache.jackrabbit.core.state.db.JNDIOracleDatabasePersistenceManager">
    <param name="path" value="${wsp.home}/db"/>
    <param name="dataSourceLocation" value="jdbc/jcr"/>
    <param name="checkValidConnectionSQL" value="select 0 from dual" />
    <param name="schemaObjectPrefix" value="pm_def"/>
    <param name="schema" value="oracle" />
    <param name="externalBLOBs" value="false"/>
    </PersistenceManager>

    --------要把這個(gè)配成直接連數(shù)據(jù)庫怎么配啊?  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-28 15:26 | 無名小卒
    配好了!!現(xiàn)在只差跟數(shù)據(jù)源的配置了!!哈哈!!  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2008-06-10 17:22 | zhou_zch
    剛開始接觸jcr,有類似于helloworld這樣的實(shí)例沒  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)[未登錄]
    2008-10-24 23:16 | bill
    請(qǐng)問后臺(tái)數(shù)據(jù)與前臺(tái)UI 是怎樣調(diào)用的?比如文件系統(tǒng)中保存的信息怎樣顯示到前臺(tái) 以tree 的方式?煩勞
      回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2011-07-26 22:18 | 斐格
    這玩意還真是難搞啊  回復(fù)  更多評(píng)論
      
    <2007年6月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    1234567

    關(guān)注工作流和企業(yè)業(yè)務(wù)流程改進(jìn)?,F(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

    常用鏈接

    留言簿(38)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    常去的網(wǎng)站

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲国产精品午夜电影| 老牛精品亚洲成av人片| 免费看美女让人桶尿口| 无人视频在线观看免费播放影院| 亚洲伊人久久精品影院| 亚洲成人免费电影| 阿v免费在线观看| 久久精品国产亚洲AV香蕉| 国产精品久久久久影院免费| 两个人看的www免费视频| 亚洲美女视频一区| 亚洲AV无码乱码在线观看| 99久久免费看国产精品| 黄色免费在线网址| 亚洲激情视频网站| 久久精品国产亚洲5555| 久久这里只有精品国产免费10| 伊人免费在线观看| 国产精品无码亚洲精品2021 | 亚洲欧洲日产国码无码久久99 | 曰批全过程免费视频在线观看无码 | 中文字幕人成无码免费视频| 高清免费久久午夜精品| 亚洲AV无码无限在线观看不卡| 亚洲成av人在线视| 亚洲国产成人久久笫一页| 久久久久久免费视频| 久草免费福利视频| 免费国产高清毛不卡片基地| 亚洲人成在线免费观看| 亚洲免费观看视频| 亚洲国产人成中文幕一级二级| 日本一区二区三区免费高清| 久久99热精品免费观看牛牛| 亚欧洲精品在线视频免费观看| 亚洲色大成网站WWW国产| 亚洲一级毛片视频| 亚洲精品国产免费| 亚洲视频一区调教| 亚洲成A人片在线观看无码不卡| 亚洲中文字幕无码专区|