/**
* author:ahuaxuan(张荣华)
* date:2009-05-19
*/
Jcr : Java Content Repository --- java 内容仓库。
话说很久以前,江湖上出了一个叫作jcr的兵器,这个东西呢确实有那么一点点的用处,于是他们就在小众的圈子里开始流行,于是各门各派都开发出来属于自己的jcr,但是后来发现,问题来了,由于各门派都有自己的jcr,使得俺们这些小程序员需要不停的学习各个jcr的api。显然这个时候需要盟主出来贡献点力量,于是,sun盟就出来说话啦:同志们啊,你们这些瞎搞是不行的,我来给你们制定一个规范,你们按照我的标准来搞,怎么样。显然江湖人士都习惯了老大的作风,于是纷纷同意。后来经过很多砖家的研究,终于制定出来一份规范,内部代号170.
说了半天光说历史了,这玩意究竟是个什么鸟东西,好不好使呀。那么来一段盟主官方发言人的声明:
内容仓库是一个高级的信息管理系统,该系统是是传统的数据仓库的扩展,它提供了诸如版本控制、全文检索,访问控制,内容分类、访问控制、内容事件监视等内容服务。第一次看到官方解释之后,ahuaxuan好像有个初步的概念,但是有点抽象,不够具体化,于是又上网找啊找啊找啊,代码看啊看啊看啊,终于,让我找到jackrabbit(后述)里面有一个DataStore类,该类有两个实现,DbDataStore,和FileDataStore,于是,终于有点明白了,原来内容仓库可以保存元数据,还有二进制数据,那么是不是我们应用中的类似数据都可以放进去呢,正如一些文章中讲到的,我们可以把图片啊,文档啊,文本啊等等都放到内容管理系统中去呢。
历史也知道了,功能也大概明白了(说得不够全面,欢迎大家纠正),下面我们得找一个实现了,要找个开源的东西吗,当然首先考虑考虑apache的项目了。哦,有一个,jackrabbit(http://jackrabbit.apache.org/),下载下来研究研究先。
学习任何新的框架都离不开例子,可运行的例子可以加深我们对框架的理解。下面我们就把jackrabbit给download下来,跑一个例子试试看。
这个例子是官方的例子,这个例子形象的说明了jackrabbit的一般访问方法:
import javax.jcr.Repository;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
import javax.jcr.Node;
import org.apache.jackrabbit.core.TransientRepository;
/**
* @author not ahuaxuan
* @since 2009-5-19
* @version $Id$
*/
public class HopFirst {
/**
* Second hop example. Stores, retrieves, and removes example content.
*/
/**
* The main entry point of the example application.
*
* @param args
* command line arguments (ignored)
* @throws Exception
* if an error occurs
*/
public static void main(String[] args) throws Exception {
// 创建一个仓库
Repository repository = new TransientRepository();
// 创建一个session
Session session = repository.login(new SimpleCredentials("username",
"password".toCharArray()));
try {
// 得到根节点(发现root变量,root,一般树结构的顶层节点叫做root)
Node root = session.getRootNode();
// 添加节点数据(仔细看hello节点和world节点的组织方式,可以发现它是一颗树形结构)
Node hello = root.addNode("hello");
Node world = hello.addNode("world");
world.setProperty("message", "Hello, World!");
// 保存数据
session.save();
// 数据查询
Node node = root.getNode("hello/world");
System.out.println(node.getPath());
System.out.println(node.getProperty("message").getString());
// 数据删除
root.getNode("hello").remove();
session.save();
} finally {
session.logout();
}
}
}
看完这个例子(项目打包到附件中),有什么收获呢,从ahuaxuan看来,有三个收获:
1, 明确了jackrabbit做crud的一般流程,从而为以后使用jackrabbit打下了不够坚实的基础
2, 明确了jackrabbit中存储数据的一般结构,显然是一颗m叉树。
3, Session的用法和db connection颇为类似,和hibernate中的session更为类似(后面的文章中我们还可以看到和hibernate session更为类似的设计理念)。
例子虽然简单,而且也有一定的含金量,但是事实上还是过于肤浅,作为技术人员是要有点追求的,要深入理解jackrabbit,那么下面的有两步必须要做:
一, 分析jcr的域模型,和关键类的继承体系
二, 分解jcr的crud主体流程,递归深入下去,这样才能深刻理解其设计理念
三, 关键逻辑的算法
Ahuaxuan将会在后续的文章中和大家一起深入分析这些知识点。
最后附上可运行的例子代码,下载后直接导入项目
谢谢观赏,to be continue
分享到:
相关推荐
JackRabbit学习参考资料总汇涉及了深入浅出的JackRabbit内容仓库API的学习,内容涉及多个专题,整个学习资料是PDF文档格式。从标签来看,这份资料主要涉及JackRabbit以及JCR(Java Content Repository)的内容仓库...
这个“jackrabbit最全入门教程”将会带你深入理解这个强大的内容管理解决方案。 首先,我们需要了解什么是JCR。JCR提供了一种统一的方式来访问和管理数字内容,无论这些内容是文档、图像、视频还是其他形式的数据。...
### Jackrabbit 在项目实施中的常见问题与解决方案 #### 一、Jackrabbit简介 Jackrabbit 是一个完全用 Java 编写的 JCR(Java Content Repository)实现,它可以作为一个独立的服务运行,也可以嵌入到更大的应用...
在本文中,我们将深入探讨Apache Jackrabbit的基础知识,以及如何开始使用它。 一、JCR和Apache Jackrabbit的概念 1. JCR:JCR为存储和检索非结构化信息提供了一个模型和API。它允许开发者创建可以跨各种存储后端...
jackrabbit 1.5.6 jar
Apache Jackrabbit是一个开源的、实现了Java Content ...总之,这个"Jackrabbit入门实例"是学习和探索JCR和Jackrabbit的好起点,它涵盖了基本的操作和概念,帮助你快速上手并深入了解这个强大的内容管理系统。
jackrabbit-standalone-1.6.5.jar是webDav的支持jar包。
Apache Jackrabbit API 是一个强大的内容管理系统(CMS)的核心组件,它是Apache Software Foundation 开发的Java Content Repository (JCR) 的实现。JCR 是一个标准,它定义了一个用于存储、管理和检索结构化内容的...
标题中的“查看jackrabbit仓库的小工具”指的是一个用于观察和管理Apache Jackrabbit仓库的实用程序。Jackrabbit是Java Content Repository (JCR) API的一个开源实现,它提供了一个内容管理系统(CMS)的基础框架,...
Apache Jackrabbit 是一个...对于开发人员来说,理解这些功能以及如何将 Jackrabbit 集成到现有应用中是深入学习的关键部分。通过实践示例代码和探索 Jackrabbit API 文档,你可以逐步掌握这个强大的内容管理系统框架。
1. Jackrabbit核心概念: - JCR:JSR 170定义了内容存储的标准接口,使得应用程序可以透明地访问和操作不同类型的存储系统。 - Node:在JCR中,内容被组织成节点,类似于文件系统的文件和目录。 - Property:节点...
1. **JCR(Java Content Repository)规范**:JCR 是一个由Java Community Process(JCP)制定的标准,定义了访问和管理内容仓库的API。它允许开发人员创建、修改和查询存储在内容仓库中的数据,这些数据可以是文档...
通过深入理解和使用"jackrabbit-webdav-2.3.2.src.zip"中的源代码,开发者不仅可以学习WebDAV协议的工作原理,还能了解如何在Android环境中实现高效稳定的WebDAV客户端功能。此外,对于想要对Jackrabbit进行定制化...
jackrabbit-webdav-2.1.0.jar 具体用法可以网上查找
jackrabbit-api-1.5.0.jar
1. Apache Jackrabbit:它是JCR规范的实现,提供了一个内容存储库,可以用来存储各种类型的数据。 2. WebDAV:这是一种增强HTTP协议的协议,允许用户远程编辑和管理文件,Jackrabbit的WebDAV模块提供了与内容存储库...
杰克兔(Jackrabbit)是Apache软件基金会的一个开源项目,主要致力于实现Java Content Repository (JCR) 规范。这个规范定义了一种用于存储、管理和检索结构化内容的标准API。在给定的压缩包"jackrabbit-jcr-commons...
jackrabbit-core-1.5.5.jar