Java apachejackrabbit和Spring中的事务

Java apachejackrabbit和Spring中的事务,java,database,spring,transactions,jackrabbit,Java,Database,Spring,Transactions,Jackrabbit,我想在使用ApacheJackrabbit存储库的SpringWebApp上运行事务。JackRabbit然后使用关系数据库(MySQL/PgSQL)作为文本数据。二进制数据存储到文件系统中 <bean id="sessionFactory" class="com.example.MyJcrSessionFactory"> <constructor-arg index="0" ref="repository"/> <constructor-arg i

我想在使用ApacheJackrabbit存储库的SpringWebApp上运行事务。JackRabbit然后使用关系数据库(MySQL/PgSQL)作为文本数据。二进制数据存储到文件系统中

<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>
到目前为止,我已经有了Jackrabbit bean的功能配置:

<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>

以及
repository.xml
文件中的Jackrabbit配置的其余部分

<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>
要在JackRabbit存储库上成功运行事务,我必须做什么?我应该使用哪种技术?

<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>

我在Tomcat/Glassfish上运行Spring 3.1和Jackrabbit 2.3.3。我不想使用过时的spring模块。

我们使用类似的设置(Jackrabbit、spring、Tomcat)作为JCA提供者

<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>
下面是一个配置示例:

<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>
<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>

当您有远程jackrabbit回购时,您知道这是如何工作的吗?