`
ahuaxuan
  • 浏览: 640648 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

深入浅出 jackrabbit 1

阅读更多
/**  
* 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
分享到:
评论
2 楼 jiaqian0118 2014-02-11  
学习了,感谢
1 楼 duker 2009-05-19  
我对jackrabbit 也有一些研究. 有空咱们可以多交流交流..517655261

相关推荐

    JackRabbit 学习参考资料总汇

    JackRabbit学习参考资料总汇涉及了深入浅出的JackRabbit内容仓库API的学习,内容涉及多个专题,整个学习资料是PDF文档格式。从标签来看,这份资料主要涉及JackRabbit以及JCR(Java Content Repository)的内容仓库...

    jackrabbit最全入门教程

    这个“jackrabbit最全入门教程”将会带你深入理解这个强大的内容管理解决方案。 首先,我们需要了解什么是JCR。JCR提供了一种统一的方式来访问和管理数字内容,无论这些内容是文档、图像、视频还是其他形式的数据。...

    jackrabbit

    ### Jackrabbit 在项目实施中的常见问题与解决方案 #### 一、Jackrabbit简介 Jackrabbit 是一个完全用 Java 编写的 JCR(Java Content Repository)实现,它可以作为一个独立的服务运行,也可以嵌入到更大的应用...

    Apache Jackrabbit入门

    在本文中,我们将深入探讨Apache Jackrabbit的基础知识,以及如何开始使用它。 一、JCR和Apache Jackrabbit的概念 1. JCR:JCR为存储和检索非结构化信息提供了一个模型和API。它允许开发者创建可以跨各种存储后端...

    jackrabbit-standalone-1.5.6.jar jackrabbit 开发包

    jackrabbit 1.5.6 jar

    Jackrabbit入门实例

    Apache Jackrabbit是一个开源的、实现了Java Content ...总之,这个"Jackrabbit入门实例"是学习和探索JCR和Jackrabbit的好起点,它涵盖了基本的操作和概念,帮助你快速上手并深入了解这个强大的内容管理系统。

    jackrabbit-standalone

    jackrabbit-standalone-1.6.5.jar是webDav的支持jar包。

    Jackrabbit API

    Apache Jackrabbit API 是一个强大的内容管理系统(CMS)的核心组件,它是Apache Software Foundation 开发的Java Content Repository (JCR) 的实现。JCR 是一个标准,它定义了一个用于存储、管理和检索结构化内容的...

    查看jackrabbit仓库的小工具

    标题中的“查看jackrabbit仓库的小工具”指的是一个用于观察和管理Apache Jackrabbit仓库的实用程序。Jackrabbit是Java Content Repository (JCR) API的一个开源实现,它提供了一个内容管理系统(CMS)的基础框架,...

    jackrabbit教程

    Apache Jackrabbit 是一个...对于开发人员来说,理解这些功能以及如何将 Jackrabbit 集成到现有应用中是深入学习的关键部分。通过实践示例代码和探索 Jackrabbit API 文档,你可以逐步掌握这个强大的内容管理系统框架。

    jackrabbit内容仓库的实例(两个工程)

    1. Jackrabbit核心概念: - JCR:JSR 170定义了内容存储的标准接口,使得应用程序可以透明地访问和操作不同类型的存储系统。 - Node:在JCR中,内容被组织成节点,类似于文件系统的文件和目录。 - Property:节点...

    jackrabbit2.6

    1. **JCR(Java Content Repository)规范**:JCR 是一个由Java Community Process(JCP)制定的标准,定义了访问和管理内容仓库的API。它允许开发人员创建、修改和查询存储在内容仓库中的数据,这些数据可以是文档...

    jackrabbit-webdav-2.3.2.src.zip

    通过深入理解和使用"jackrabbit-webdav-2.3.2.src.zip"中的源代码,开发者不仅可以学习WebDAV协议的工作原理,还能了解如何在Android环境中实现高效稳定的WebDAV客户端功能。此外,对于想要对Jackrabbit进行定制化...

    jackrabbit-webdav-2.1.0.jar

    jackrabbit-webdav-2.1.0.jar 具体用法可以网上查找

    jackrabbit-api-1.5.0.jar

    jackrabbit-api-1.5.0.jar

    jackrabbit-webdav-2.7.1.zip

    1. Apache Jackrabbit:它是JCR规范的实现,提供了一个内容存储库,可以用来存储各种类型的数据。 2. WebDAV:这是一种增强HTTP协议的协议,允许用户远程编辑和管理文件,Jackrabbit的WebDAV模块提供了与内容存储库...

    jackrabbit-jcr-commons-2.5.0.zip

    杰克兔(Jackrabbit)是Apache软件基金会的一个开源项目,主要致力于实现Java Content Repository (JCR) 规范。这个规范定义了一种用于存储、管理和检索结构化内容的标准API。在给定的压缩包"jackrabbit-jcr-commons...

    jackrabbit-core-1.5.5.jar

    jackrabbit-core-1.5.5.jar

Global site tag (gtag.js) - Google Analytics