《JAVA基础-JAVA中的JCR模块.docx》由会员分享,可在线阅读,更多相关《JAVA基础-JAVA中的JCR模块.docx(4页珍藏版)》请在金锄头文库上搜索。
1、 JAVA基础:JAVA中的JCR模块JcrTemplate,允许执行JcrCallback和特别处理(将需检查的JCR特别转换成不需检查的Spring DAO特别)。这个模板实现了来自JCRSession的绝大局部方法,可以简洁地作为替换物使用。此外该模板知道线程绑定的会话,这个会话可以跨几个方法使用,这在使用事务型仓库时特别有用。RepositoryFactoryBean,它配置、启动和停顿仓库实例。由于JSR-170并没有说明仓库配置的标准方式,需要留意实现在这个方面的不同。这个支持包含预定义的用于Jackrabbit和Jeceira的FactoryBean,以及一个可以很简单支持其它仓
2、库的抽象基类。SessionFactory,用来统一Repository,Credentials和Workspace接口,允许自动注册监听器和自定义名字空间。Spring声明性事务为那些实现了(可选)事务特性的仓库供应了支持。OpenSessionInView拦截器和过滤器允许每个线程跨不同组件使用同一会话。与JcrTemplate一起,检索、关闭和治理JCR会话的工作已经外部化,对于调用者完全透亮。本文将使用参考实现(Jackrabbit),由于JCR模块使用的是javax.jcr接口,因此转变实现根本就是一个配置的问题。让我们一步一步地来看看在Jackrabbit之上如何使用Java内容仓
3、库,以及如何让Spring模块来帮忙完成这一工作。配置仓库和SessionFactoryJCR支持供应RepositoryFactoryBean类配置Jackrabbit,它需要JackRabbit的配置文件和主名目。留意,RepositoryFactoryBean在使用本地文件系统时特殊有用;对于效劳器环境,仓库可能被注册在JNDI中,此时可以使用JndiObjectFactoryBean帮忙类(Spring分发包的一局部)检索它:或使用Spring 2.0的模式名字空间:为了简化与JCR的工作,模块增加了SessionFactory接口:public interface SessionFa
4、ctory public Session getSession() throws RepositoryException;public SessionHolder getSessionHolder(Session session);SessionFactory隐蔽了实现内部的认证细节,因此一旦配置完成,使用同一证书的会话可以很简单的被检索出来。为了利用实现的特性(没有涵盖在标准中的),这个接口允许检索SessionHolder。它是一个JCR模块特定类,主要被用于事务和会话治理(通过一种可用于每个JCR实现的缺省、通用实现),但是它不支持可选特性或自定义特性(如JackrabbitSessionHolder,它支持Jackrabbit的事务根底构造)。JCR模块供应一种简易、透亮的方式来发觉SessionHolder实现(这些我将在以后具体提到),使之很简单地插入对JSR-170其它兼容库的支持。SessionFactory的缺省实现是JcrSessionFactory,它要求一个进展工作的仓库和证书。这个bean声明特别简洁,需要留意的地方是,密码被供应给SimpleCredential的构造函数:它只承受字符数组,使用Spring工厂声明作为一种变通。