java - Apache Jackrabbit 和 Spring 中的事务

标签 java database spring transactions jackrabbit

我想在使用 Apache Jackrabbit 存储库的 Spring webapp 上运行事务。 JackRabbit 然后使用关系数据库 (MySQL/PgSQL) 来存储文本数据。二进制数据存储到文件系统。

到目前为止,我已经有了 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 配置。

我必须做什么才能在 JackRabbit 存储库上成功运行事务?我应该使用哪种技术?

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

最佳答案

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

这是一个示例配置:

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

关于java - Apache Jackrabbit 和 Spring 中的事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764524/

相关文章:

java - 缺少返回声明错误

java - 如何正确管理 Android 应用程序的上下文(非 Activity 类)

mysql - 如何使时间戳不显示时间

spring - 在 spring 安全/表单登录中输入错误凭据时的无限循环

spring - SecurityContextHolder.getContext() 在 AspectJ 类中不起作用

java - Hibernate 关系加载

java - Java Applet 中的面板不显示

python - AWS Redshift 数据处理

mongodb - 聚合管道抛出错误 "A pipeline stage specification object must contain exactly one field."

java - 如何使用 OR 条件验证 2 个字段?