快速业务通道

集成Java内容仓库和Spring - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
完全透明。

本文将使用参考实现(Jackrabbit),由于JCR模块使用的是javax.jcr接口, 因此改变实现根本就是一个配置的问题。让我们一步一步地来看看在Jackrabbit 之上如何使用Java内容仓库,以及如何让Spring模块来帮助完成这一工作。

配置仓库和SessionFactory<bean id="repository" class="org.springmodules.jcr.jackrabbit.RepositoryFactoryBean">   <!-- normal factory beans params -->   <property name="configuration" value="classpath:jackrabbit- repo.xml"/>   <property name="homeDir" ref="./tmp/repo"/> </bean>

JCR支持提供RepositoryFactoryBean类配置Jackrabbit,它需要JackRabbit的 配置文件和主目录。注意,RepositoryFactoryBean在使用本地文件系统时特别有 用;对于服务器环境,仓库可能被注册在JNDI中,此时可以使用 JndiObjectFactoryBean帮助类(Spring分发包的一部分)检索它:

<bean id="repository" class="org.springframework.jndi.JndiObjectFactoryBean">   <property name="jndiName" value="java:comp/env/jcr/myRepository"/> </bean>

或使用Spring 2.0的模式名字空间:

<jndi:lookup id="entityManagerFactory" jndi- name="jcr/myRepository"/>

为了简化与JCR的工作,模块增加了SessionFactory接口:

public interface SessionFactory { public Session getSession() throws RepositoryException; public SessionHolder getSessionHolder(Session session); }

集成Java内容仓库和Spring(4)

时间:2011-05-20 infoq Costin Leau 译:胡键

SessionFactory隐藏了实现内部的认证细节,因此一旦配置完成,使用同一证 书的会话可以很容易的被检索出来。为了利用实现的特性(没有涵盖在规范中的 ),这个接口允许检索SessionHolder。它是一个JCR模块特定类,主要被用于事 务和会话管理(通过一种可用于每个JCR实现的缺省、通用实现),但是它不支持 可选特性或自定义特性(如JackrabbitSessionHolder,它支持Jackrabbit的事务 基础结构)。JCR模块提供一种简易、透明的方式来发现SessionHolder实现(这 些我将在以后详细提到),使之很容易地插入对JSR-170其它兼容库的支持。

SessionFactory的缺省实现是JcrSessionFactory,它要求一个进行工作的仓 库和证书。

<!-— SessionFactory --> <bean id="jcrSessionFactory" class="org.springmodules.jcr.JcrSessionFactory"> <property name="repository" ref="repository"/> <property name="credentials"> <bean class="javax.jcr.SimpleCredentials"> <constructor-arg index="0" value="bogus"/> <!-- create the credentials using a bean factory --> <constructor-arg index="1"> <bean factory-bean="password" factory-method="toCharArray"/> </constructor-arg> </bean> </property> </bean> <!-- create the password to return it as a char[] --> <bean id="password" class="java.lang.String"> <constructor-arg index="0" value="pass"/> </bean>

这个bean声明非常简单,唯一需要注意的地方是,密码被提供给 SimpleCredential的构造函数:它只接

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号