Transactions in Apache Jackrabbit and Spring

时光总嘲笑我的痴心妄想 提交于 2019-12-21 23:43:00

问题


I want to run transactions on my Spring webapp which uses Apache Jackrabbit repository. JackRabbit then uses relational database (MySQL/PgSQL) for text data. Binary data are stored to FileSystem.

So far I have this functional configuration of Jackrabbit beans:

<bean id="sessionFactory" class="com.example.MyJcrSessionFactory">
    <constructor-arg index="0" ref="repository"/>
    <constructor-arg index="1" ref="jcrCredentials"/>
</bean>

<bean id="repository" class="org.apache.jackrabbit.core.RepositoryImpl">
    <constructor-arg index="0" ref="config" />
</bean>

<bean id="config" class="org.apache.jackrabbit.core.config.RepositoryConfig" factory-method="create">
    <constructor-arg index="0" type="java.io.InputStream" value="classpath:jackrabbit/repository.xml"/>
    <constructor-arg index="1" type="java.lang.String" value="/tmp/repository" />
</bean>

<bean id="jcrCredentials" class="javax.jcr.SimpleCredentials">
    <constructor-arg index="0" type="java.lang.String" value="..." />
    <constructor-arg index="1" type="char[]" value="..." />
</bean>

And rest of Jackrabbit configuration in repository.xml file.

What do I have to do to successfully run transactions on JackRabbit repository? Which technology am I supposed to use?

I'm running Spring 3.1, Jackrabbit 2.3.3 on Tomcat/Glassfish. And I don't want to use obsolete spring modules.


回答1:


We're using a similar setup (Jackrabbit, Spring, Tomcat) with Jencks as a JCA provider.

Here's an example config:

<bean id="txManagerJencks" class="org.jencks.factory.TransactionManagerFactoryBean" />

<bean id="pooledConnectionManagerJcr" class="org.jencks.factory.ConnectionManagerFactoryBean">
    <property name="transactionManager">
        <ref local="txManagerJencks" />
    </property>
    <property name="transaction" value="xa" />
    <property name="poolMinSize" value="1"/>
    <property name="poolMaxSize" value="5"/>
    <property name="connectionMaxIdleMinutes" value="5" />      
</bean>

<bean id="repositoryManagedConnectionFactory" class="org.apache.jackrabbit.jca.JCAManagedConnectionFactory" destroy-method="finalize">
    <property name="homeDir" value="${jackrabbit.homeDir}/jackrabbit" />
    <property name="configFile" value="classpath:repository.xml" />
</bean>

<bean id="repository"
    class="org.springframework.jca.support.LocalConnectionFactoryBean" >
    <property name="managedConnectionFactory">
        <ref local="repositoryManagedConnectionFactory" />
    </property>
    <property name="connectionManager">
        <ref local="pooledConnectionManagerJcr" />
    </property>
</bean>


来源:https://stackoverflow.com/questions/8764524/transactions-in-apache-jackrabbit-and-spring

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!