什么是JAVA內(nèi)容倉庫(Java Content Repository)(1)
原文地址:http://www.onjava.com/pub/a/onjava/2006/10/04/what-is-java-content-repository.html?page=4
JSR-170把自己定義為一個能與內(nèi)容倉庫互相訪問的,獨立的,標(biāo)準(zhǔn)的方式。同時它也對內(nèi)容倉庫做出了自己的定義,它認為內(nèi)容倉庫是一個高級的信息管理系統(tǒng),該系統(tǒng)是是傳統(tǒng)的數(shù)據(jù)倉庫的擴展,它提供了諸如版本控制、全文檢索,訪問控制,內(nèi)容分類、訪問控制、內(nèi)容事件監(jiān)視等內(nèi)容服務(wù)。
Java Content Repository? API(JSR-170)試圖建立一套標(biāo)準(zhǔn)的API去訪問內(nèi)容倉庫。如果你對內(nèi)容管理系統(tǒng)(CMS)不熟悉的話,你一定會對內(nèi)容倉庫是什么感到疑惑。你可以這樣去理解,把內(nèi)容倉庫理解為一個用來存儲文本和二進制數(shù)據(jù)(圖片,word文檔,PDF等等)的數(shù)據(jù)存儲應(yīng)用程序。一個顯著的特點是你不用關(guān)心你真正的數(shù)據(jù)到底存儲在什么地方,是關(guān)系數(shù)據(jù)庫?是文件系統(tǒng)?還是XML?不僅僅是數(shù)據(jù)的存儲和讀取,大多數(shù)的內(nèi)容倉庫還提供了更加高級的功能,例如訪問控制,查找,版本控制,鎖定內(nèi)容等等。
一段時間以來市場上出現(xiàn)了各個廠家開發(fā)的不同的CMS系統(tǒng),這些系統(tǒng)都建立在他們各自的內(nèi)容倉庫之上。
問題出現(xiàn)了,每個CMS開發(fā)商都提供了他們自己的API來訪問內(nèi)容倉庫。這對應(yīng)用程序的開發(fā)者帶來了困擾,因為他們要學(xué)習(xí)不同的開發(fā)商提供的API,同時,他們的代碼也與這些特定的API產(chǎn)生了綁定。
JSR-170正是為解決這一問題而出現(xiàn)的,它提供了一套標(biāo)準(zhǔn)的API來訪問任何數(shù)據(jù)倉庫。通過JSR-170,你開發(fā)代碼只需要引用 javax.jcr.* 這些類和接口。它適用于任何兼容JSR-170規(guī)范的內(nèi)容倉庫。
我們將通過一個例子來逐步了解JSR-170。
為什么需要 Java Content Repository API
隨著各個廠家各自的內(nèi)容倉庫實現(xiàn)數(shù)量的增長,人們越來越需要一組通用的編程接口來使用這些內(nèi)容倉庫,這就是JSR-170所要做的東西。它提供一組通用的編程接口來連接內(nèi)容倉庫。你可以把JSR-170理解為和JDBC類似的API,這樣你可以不依賴任何具體的內(nèi)容倉庫實現(xiàn)來開發(fā)你的程序。你可以直接使用支持JSR-170的內(nèi)容倉庫;或者如果一些廠家的內(nèi)容倉庫不支持JSR-170則可以通過這些廠家提供的JSR-170驅(qū)動來完成從JSR-170與廠家特定的內(nèi)容倉庫的轉(zhuǎn)換。
下面這張圖描述了使用JSR-170開發(fā)的應(yīng)用系統(tǒng)的結(jié)構(gòu)。在該系統(tǒng)運行的時候,它可以操作內(nèi)容倉庫1,2,3中的任意一個。在這些內(nèi)容倉庫當(dāng)中,只有2是直接支持JSR-170的,剩下的兩個都需要JSR-170驅(qū)動來和應(yīng)用系統(tǒng)交互。注意:你的應(yīng)用系統(tǒng)完全不用關(guān)心你的數(shù)據(jù)是如何存儲的。1可能使用了關(guān)系數(shù)據(jù)庫來存儲,而2使用了文件系統(tǒng),至于上,它甚至更前衛(wèi)的使用了XML。

JSR-170 API對不同的人員提供了不同的好處。
●對于開發(fā)者無需了解廠家的倉庫特定的API,只要兼容JSR-170就可以通過JSR-170訪問其倉庫。
●對于使用CMS的公司則無需花費資金用于在不同種類CMS的內(nèi)容倉庫之間進行轉(zhuǎn)換。
●對于CMS廠家,無需自己開發(fā)內(nèi)容倉庫,而專注于開發(fā)CMS應(yīng)用。