集成Java内容仓库和Spring - 编程入门网
,不会有任何代码的变动。
API的核心类是Session,它代表客户端和仓库之间的连接,使用连接活跃其上 的workspace名和所提供的credentials进行定义。Session包含读(级别1)和写 (级别2)方法;使用底层仓库不支持的功能时将抛出异常。 这个包还包含了那些组成仓库的单元接口的定义:Workspace,Credentials, Node,Property,Item(Node和Property的超类)和Value。javax.jcr.query包 负责处理查询,javax.jcr.nodetype包负责定义节点类型。剩余的包负责可选级 别的功能,如javax.jcr.version、javax.jcr.observation、javax.jcr.lock。 一个有趣的包是javax.jcr.util,它包含一个ItemVisitor的实现,它源自GOF( 四人帮,Gang of Four)撰写的著名的设计模式中的访问者模式(Visitor- pattern)接口。 JSR-170实现 Google和SourceForge会列出好几页的JSR-170实现,但是它们中的大多数都处 于alpha阶段,没有发布任何版本。以下是一个可以自由下载的项目列表,它们已 经被作者使用过: 集成Java内容仓库和Spring(3)时间:2011-05-20 infoq Costin Leau 译:胡键Jackrabbit 它是JSR-170的参考实现,Apache基金的一部分,提供级别1,2和可选功能。 在撰写本文时,它已经经过孵化阶段并有一个官方公开的发布版本,该版本被认 为足够稳定,可以被用在产品环境。此外,Jackrabbit也被用来作为Day Software(JSR-170的领导者)的商业产品的基础。除了实现JSR-170中定义的所 有特性,JackRabbit还加入了额外的功能(如SessionListeners或CustomNode注 册),以及一个有趣的捐献来的项目套件,它包括:JCA连接器、taglib、WebDAV 接口、虚拟文件系统和JDBC后端。JackRabbit的许可证是Apache 2.0。 eXo JCR 它是eXo platoform的一部分,包含规范要求的所有强制特性和几个可选特性 。最近一次的版本发布(1.0RC7)是2006年6月22日,基于规范的最终草案2。eXo JCR支持JDBC兼容数据库,如MySQL、DB2或HSQL(它是缺省的)作为后端存储,它 是双许可的(GPL和商用),最终版的发布日期尚未确定。 Jeceira 与Jackrabbit和eXo JCR相比,它是相对较新的项目。它实现了级别1和2的一 些需求,只在写操作时,支持来自可选级别的观察功能。不幸的是,这个项目处 于未完成阶段,在过去的9个月没有新版本发布。然而它被Magnolia(一个流行的 基于java的CMS,与作为JSR-170参考实现的Jackrabbit类似)使用。在最终版发 布时,它计划包含所有级别的功能,发布时间目前尚不确定。Jeceira的许可证是 Apache 2.0,使用HSQL数据库作为它的存储引擎。 JCR模块 Spring Modules的一部分,JCR模块的主要目标是:以一种类似Spring主分发 包中ORM包的方式,简化使用JSR-170 API进行开发。特点如下: JcrTemplate,允许执行JcrCallback和异常处理(将需检查的JCR异常转换成 不需检查的Spring DAO异常)。这个模板实现了来自JCR Session的绝大部分方法 ,可以简单地作为替换物使用。此外该模板知道线程绑定的会话,这个会话可以 跨几个方法使用,这在使用事务型仓库时非常有用。 RepositoryFactoryBean,它配置、启动和停止仓库实例。因为JSR-170并没有 说明仓库配置的标准方式,需要注意实现在这个方面的不同。这个支持包含预定 义的用于Jackrabbit和Jeceira的FactoryBean,以及一个可以很容易支持其它仓 库的抽象基类。 SessionFactory,用来统一Repository,Credentials和Workspace接口,允许 自动注册监听器和自定义名字空间。 Spring声明性事务为那些实现了(可选)事务特性的仓库提供了支持。 OpenSessionInView拦截器和过滤器允许每个线程跨不同组件使用同一会话。 与JcrTemplate一起,检索、关闭和管理JCR会话的工作已经外部化,对于调用者 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |