快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-17
quot;sessionFactory" ref="jcrSessionFactory"/> </bean>

为了声明事务划分,我与上述事务管理器bean声明一起使用标准Spring类:

<!-- transaction proxy for Jcr services/facades --> <bean id="txProxyTemplate" abstract="true" class="org.springframework.transaction.interceptor.TransactionProxyFact oryBean">    <property name="proxyTargetClass">      <value>true</value>    </property>    <property name="transactionManager" ref="jcrTransactionManager"/>    <property name="transactionAttributes">     <props>      <prop key="save*">PROPAGATION_REQUIRED</prop>      <prop key="*">PROPAGATION_REQUIRED, readOnly</prop>     </props>    </property> </bean> <bean id="jcrService" parent="txProxyTemplate">    <property name="target">      <bean class="org.springmodules.examples.jcr.JcrService">        <property name="template" ref="jcrTemplate"/>      </bean>    </property> </bean>

如果要求一个JTA管理器,一个简单而优雅的解决办法是使用来自Jackrabbit 捐献包的jca连接器。为了使用jca,你并不需要一个应用服务器,因为你可以用 一个可插入的JCA容器,如Jencks。JCA容器的配置已经超出本文的范围,但是你 可以参考JCR模块例子中使用Jencks的例子。

TransactionAwareRepository

对于要求普通JCR代码的应用程序,JCR模块允许用直接使用JCR API的代码, 透明地使用事务驱动会话。 此时,可以使用TransactionAwareRepository,它有 一个参数是JcrSessionFactory。这样,在使用Session.login()(它接收定义在 JcrSessionFactory中的参数)创建任何新会话时,如果发现有线程绑定的会话, 就将返回它。注意:如果使用事务,JCR会话就是事务性的,否则你必须手动设置 属性allowNonTxRepository为true,配置如下,要不然将抛出一个异常:

<bean id="transactionRepository" class="org.springmodules.jcr.TransactionAwareRepository">    <property name="allowNonTxRepository" value="true"/>    <property name="targetFactory" ref="jcrSessionFactory"/> </bean>

transactionRepository bean可以被用作一个普通的JCR仓库,不关心底层机 制或线程绑定会话、事务性或非事务性(如果有事务,关闭会话时要提交事务) 。

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

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

可选特性支持侦测

为了最大化代码重用,但仍然允许插入可选特性,如用于不同JCR实现的事务 支持,JCR模块使用SessionHolder接口(前面已经提到),同时还有 SessionHolderProvider和SessionHolderProviderManager接口。用户一般不用与 它们打交道,因为它们是框架内部使用的;但是,它们代表了JCR模块主要的扩展 点。

SessionHolder类被内部不同组件使用,主要被事务管理器用来操作会话, SessionHolderProvider和SessionHolderProviderManager处理sessionHolder创 建的方式以及提供者是如何被个别使用的。缺省将使用 ServiceSessionHolderProviderManager,它利用JDK 1.3 Service Prov

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号