<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)容倉(cāng)庫(kù)模型
    JSR-170 是這樣定義內(nèi)容倉(cāng)庫(kù)的,內(nèi)容倉(cāng)庫(kù)由一組 workspace(工作空間)組成,這些workspace通常應(yīng)該包含相似的內(nèi)容。一個(gè)內(nèi)容倉(cāng)庫(kù)有一個(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)容倉(cāng)庫(kù)模型。每個(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)容倉(cāng)庫(kù)實(shí)現(xiàn)的功能,JSR-170定義了三種級(jí)別:
    Level 1:定義了一個(gè)只讀的內(nèi)容倉(cāng)庫(kù)。功能包括讀取內(nèi)容,將內(nèi)容導(dǎo)出為XML和查找內(nèi)容。
    Level 2:定義了可寫的內(nèi)容倉(cāng)庫(kù)。Level 2是Level 1的擴(kuò)展,新增的功能包括往內(nèi)容倉(cāng)庫(kù)里寫入內(nèi)容,和從XML導(dǎo)入數(shù)據(jù)到倉(cāng)庫(kù)。
    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)容倉(cāng)庫(kù)。

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

    ? 在上面的情況下,內(nèi)容倉(cāng)庫(kù)主目錄是c:/temp/Blogging.
    2.內(nèi)容倉(cāng)庫(kù)配置文件:一個(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)容倉(cāng)庫(kù)的全局?jǐn)?shù)據(jù)存儲(chǔ)位置,這些全局?jǐn)?shù)據(jù)包括已注冊(cè)的命名空間,定制的節(jié)點(diǎn)類型等等。??? ??? JackRabbit 提供了幾種選擇,一種是像上面例子里配置的存儲(chǔ)在本地文件里,LocalFileSystem. 如果你想把它們存儲(chǔ)在數(shù)據(jù)庫(kù)里,你可以使用 DbFileSystem.
    ? b,<Security>:內(nèi)容倉(cāng)庫(kù)的安全配置,它有兩個(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è)置,一種是在倉(cāng)庫(kù)實(shí)例創(chuàng)建時(shí)直接傳到Jackrabbit里去,一種是間接的通過設(shè)置JNDI object factory。
    你可以設(shè)置org.apache.jackrabbit.repository.home 這個(gè)系統(tǒng)屬性的值來指定你的內(nèi)容倉(cāng)庫(kù)主目錄;也可以設(shè)置
    org.apache.jackrabbit.repository.conf 這個(gè)系統(tǒng)屬性的值來指定你的內(nèi)容倉(cāng)庫(kù)配置文件repository.xml。如果你不設(shè)定這兩個(gè)
    參數(shù),Jackrabbit會(huì)把當(dāng)前目錄作為內(nèi)容倉(cāng)庫(kù)主目錄,同時(shí),它有一個(gè)默認(rèn)的內(nèi)容倉(cāng)庫(kù)配置文件。

    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)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-01-25 10:39 | 饒志華
    有無(wú)JSR-170 的中文版?  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-01-25 20:58 | ronghao
    呵呵 如果你有,麻煩隨便給我也發(fā)一份:)  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-21 10:29 | 無(wú)名小卒
    配置存儲(chǔ)在數(shù)據(jù)庫(kù)里怎么配啊?  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-21 12:03 | ronghao
    <PersistenceManager>節(jié)點(diǎn)屬性可以配置  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-21 15:22 | 無(wú)名小卒
    請(qǐng)問倉(cāng)庫(kù)除了存儲(chǔ)和提供數(shù)據(jù),還有其它的能力嗎?比如訪問控制工作流之類的?  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(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)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-22 08:56 | 無(wú)名小卒
    在實(shí)際開發(fā)中,它只能做為存儲(chǔ)單元,與前臺(tái)的門戶和后面的工作流是怎么結(jié)合的呢?它有沒有接口直接訪問別人提供的數(shù)據(jù)內(nèi)容展現(xiàn)給門戶!!  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)[未登錄]
    2007-06-22 09:54 | ronghao
    你可以把它理解等同為數(shù)據(jù)庫(kù),你從里面獲取和存儲(chǔ)數(shù)據(jù)而已,與前臺(tái)的門戶和后面的工作流的結(jié)合都不是它而是開發(fā)人員所要操心的事情。  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-22 10:03 | 無(wú)名小卒
    好的,謝謝!!那jcr提供的那些接口,比如rmi,net是做什么用啊?  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)[未登錄]
    2007-06-22 17:07 | ronghao
    我沒用到過。猜想的話,應(yīng)該是提供遠(yuǎn)程訪問。  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-25 16:40 | 無(wú)名小卒
    想把數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)里,除了配置使用DbFileSystem.還需要怎么配置啊?還有數(shù)據(jù)庫(kù)結(jié)構(gòu)怎么定義?太麻煩你了哈,剛接觸這個(gè)!想認(rèn)真學(xué)習(xí)一下,又找不到相關(guān)的文檔!  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)[未登錄]
    2007-06-26 22:43 | ronghao
    @無(wú)名小卒
    不需要再配置,jackrabbit會(huì)在第一次初始化的時(shí)候自動(dòng)生成相關(guān)的數(shù)據(jù)庫(kù)表:)  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-27 09:36 | 無(wú)名小卒
    哦,是這樣哦!就只要配置Repository.xml里的filesystem節(jié)點(diǎn)就行了是不?
    :)  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-27 09:39 | 無(wú)名小卒
    還有這個(gè)DBFILESYSTEM支持所有的數(shù)據(jù)庫(kù)嗎?  回復(fù)  更多評(píng)論
      
    # 報(bào)錯(cuò),搞不懂了
    2007-06-27 10:10 | 無(wú)名小卒
    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)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-27 10:43 | 無(wú)名小卒
    成功了!!  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-27 14:46 | 無(wú)名小卒
    唉,還沒搞懂啊!!里面有幾個(gè)FILEsystem節(jié)點(diǎn),該怎么配置啊? 數(shù)據(jù)還是存在文件系統(tǒng)里,能不能給我你做的DEMO看看!謝謝!!QQ:20367120  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-27 17:29 | 無(wú)名小卒
    數(shù)據(jù)庫(kù)里創(chuàng)建了三張表,但是數(shù)據(jù)還是存在本地系統(tǒng)的文件里面得!搞不懂怎么使用了!  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(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)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-28 11:38 | 無(wú)名小卒
    怎么都看不到關(guān)于全用數(shù)據(jù)庫(kù)存儲(chǔ)的東西哦!!
    他的示例也是文件系統(tǒng):
    System.setProperty("org.apache.jackrabbit.repository.home","c:/temp/Blogging");  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-28 15:07 | 無(wú)名小卒
    <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ù)庫(kù)怎么配啊?  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2007-06-28 15:26 | 無(wú)名小卒
    配好了!!現(xiàn)在只差跟數(shù)據(jù)源的配置了!!哈哈!!  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(Java Content Repository)(2)
    2008-06-10 17:22 | zhou_zch
    剛開始接觸jcr,有類似于helloworld這樣的實(shí)例沒  回復(fù)  更多評(píng)論
      
    # re: 什么是JAVA內(nèi)容倉(cāng)庫(kù)(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)容倉(cāng)庫(kù)(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)。現(xiàn)就職于ThoughtWorks。新浪微博:http://weibo.com/ronghao100

    常用鏈接

    留言簿(38)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    常去的網(wǎng)站

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产精品国产亚洲精品看不卡| 免费国产成人午夜私人影视| www.黄色免费网站| 岛国av无码免费无禁网站| 免费观看的毛片手机视频| 亚洲AV无码一区二三区| 狠狠亚洲狠狠欧洲2019| 亚洲激情中文字幕| 亚洲三级高清免费| 青青草97国产精品免费观看| 免费观看一区二区三区| 久久福利资源网站免费看| 日韩免费三级电影| 国产精品亚洲片在线观看不卡 | 亚洲熟妇少妇任你躁在线观看无码 | 国产黄色一级毛片亚洲黄片大全 | 国产亚洲精品一品区99热| 亚洲另类图片另类电影| 亚洲a无码综合a国产av中文| 91精品成人免费国产| 免费精品国产自产拍在线观看图片| 国产精品免费小视频| 亚洲成熟xxxxx电影| 亚洲欧美成aⅴ人在线观看| 中国国产高清免费av片| 黄页网站免费在线观看| 亚洲欧洲日产国码一级毛片 | 97亚洲熟妇自偷自拍另类图片| 亚洲女子高潮不断爆白浆| 999zyz**站免费毛片| 毛片免费视频在线观看| 中国亚洲女人69内射少妇| 亚洲国产人成在线观看| 一出一进一爽一粗一大视频免费的| 久久成人国产精品免费软件| 亚洲AV无码之日韩精品| 亚洲国产中文在线视频| 最近国语视频在线观看免费播放 | 亚洲午夜福利精品无码| 亚洲1234区乱码| 在线看片免费人成视频久网下载|