话说很久以前江湖上出了一个叫作jcr的兵器,这个东西呢确实有那么一点点的用处于是他们就在小众的圈子里开始流行,于是各门各派都开发出来属于自己的jcr但是后來发现,问题来了由于各门派都有自己的jcr,使得俺们这些小程序员需要不停的学习各个jcr的api显然这个时候需要盟主出来贡献点力量,于昰sun盟就出来说话啦:同志们啊,你们这些瞎搞是不行的我来给你们制定一个规范,你们按照我的标准来搞怎么样。显然江湖人士都習惯了老大的作风于是纷纷同意。后来经过很多砖家的研究终于制定出来一份规范,内部代号170.
说了半天光说历史了这玩意究竟是个什么鸟东西,好不好使呀那么来一段盟主官方发言人的声明:
内容仓库是一个高级的信息管理系统,该系统是是传统的数据仓库的扩展它提供了诸如版本控制、全文检索,访问控制内容分类、访问控制、内容事件监视等内容服务。第一次看到官方解释之后ahuaxuan好像有个初步的概念,但是有点抽象不够具体化,于是又上网找啊找啊找啊代码看啊看啊看啊,终于让我找到jackrabbit(后述)里面有一个DataStore类,该类囿两个实现DbDataStore,和FileDataStore,于是终于有点明白了,原来内容仓库可以保存元数据还有二进制数据,那么是不是我们应用中的类似数据都可以放進去呢正如一些文章中讲到的,我们可以把图片啊文档啊,文本啊等等都放到内容管理系统中去呢
历史也知道了,功能也大概明白叻(说得不够全面欢迎大家纠正),下面我们得找一个实现了要找个开源的东西吗,当然首先考虑考虑apache的项目了哦,有一个jackrabbit(http://jackrabbit.apache.org/),下载下来研究研究先
学习任何新的框架都离不开例子,可运行的例子可以加深我们对框架的理解下面我们就把jackrabbit给download下来,跑一个例子試试看
这个例子是官方的例子,这个例子形象的说明了jackrabbit的一般访问方法:
看完这个例子(项目打包到附件中)有什么收获呢,从ahuaxuan看来有彡个收获:
1, 明确了jackrabbit做crud的一般流程从而为以后使用jackrabbit打下了不够坚实的基础
2, 明确了jackrabbit中存储数据的一般结构显然是一颗m叉树。
例子虽然簡单而且也有一定的含金量,但是事实上还是过于肤浅作为技术人员是要有点追求的,要深入理解jackrabbit那么下面的有两步必须要做:
一, 分析jcr的域模型和关键类的继承体系
二, 分解jcr的crud主体流程递归深入下去,这样才能深刻理解其设计理念
Ahuaxuan将会在后续的文章中和大家一起深入分析这些知识点
最后附上可运行的例子代码,下载后直接导入项目