<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)容。一個內(nèi)容倉庫有一個到多個 workspace。每個workspace都是一個樹狀結(jié)構(gòu),都有一個唯一的樹根節(jié)點(root node)。樹上的item(元素)或者是個node(節(jié)點)或者是個property(屬性)。每個node都可以有零個到多個子節(jié)點和零個到多個子屬性。只有根節(jié)點沒有父節(jié)點,其余所有的節(jié)點都有一個父節(jié)點。property 也必須有一個父節(jié)點,但它沒有子節(jié)點或是子屬性,property 是葉子元素。property是真正存儲數(shù)據(jù)的元素。

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

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

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

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

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

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

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

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

    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ù)  更多評論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-27 10:43 | 無名小卒
    成功了!!  回復(fù)  更多評論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-27 14:46 | 無名小卒
    唉,還沒搞懂啊!!里面有幾個FILEsystem節(jié)點,該怎么配置啊? 數(shù)據(jù)還是存在文件系統(tǒng)里,能不能給我你做的DEMO看看!謝謝!!QQ:20367120  回復(fù)  更多評論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-27 17:29 | 無名小卒
    數(shù)據(jù)庫里創(chuàng)建了三張表,但是數(shù)據(jù)還是存在本地系統(tǒng)的文件里面得!搞不懂怎么使用了!  回復(fù)  更多評論
      
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)[未登錄]
    2007-06-28 09:40 | ronghao
    # re: 什么是JAVA內(nèi)容倉庫(Java Content Repository)(2)
    2007-06-28 11:38 | 無名小卒
    怎么都看不到關(guān)于全用數(shù)據(jù)庫存儲的東西哦!!
    他的示例也是文件系統(tǒng):
    System.setProperty("org.apache.jackrabbit.repository.home","c:/temp/Blogging");  回復(fù)  更多評論
      
    # 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>

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

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

    常用鏈接

    留言簿(38)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    常去的網(wǎng)站

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 免费91麻豆精品国产自产在线观看 | 亚洲精品久久无码| 精品亚洲综合久久中文字幕| 免费高清av一区二区三区| 麻豆精品不卡国产免费看| 免费看一级一级人妻片| 亚洲欧洲日韩国产一区二区三区| 亚洲欧洲免费视频| 亚洲欧洲美洲无码精品VA| 亚洲国产免费综合| 女性自慰aⅴ片高清免费| 免费人成在线观看69式小视频| 99视频免费在线观看| h视频在线免费观看| 在线观看亚洲专区| 亚洲AV永久无码天堂影院| 国产成人精品日本亚洲11| 久久亚洲AV成人无码国产 | 亚洲成在人线aⅴ免费毛片| 亚洲一区二区三区久久| 亚洲熟妇无码爱v在线观看| 国产亚洲精品自在久久| 中文字幕亚洲图片| 亚洲人成电影在线播放| 亚洲综合色成在线播放| 亚洲欧洲日产国码一级毛片| 婷婷亚洲天堂影院| 亚洲?v无码国产在丝袜线观看| 国产精品无码一二区免费| 永久免费视频v片www| 日韩精品视频免费在线观看| 日韩免费a级在线观看| A在线观看免费网站大全| 日韩免费一区二区三区在线 | 亚洲欧洲日韩在线电影| 亚洲精品在线播放| 亚洲人成电影在线观看青青| 亚洲二区在线视频| 亚洲日韩AV一区二区三区四区 | 国产大片免费观看中文字幕| 国产乱弄免费视频|