2012-01-06 3 views
1

Я хочу запускать транзакции на моем Spring Webapp, который использует репозиторий Apache Jackrabbit. Затем JackRabbit использует реляционную базу данных (MySQL/PgSQL) для текстовых данных. Двоичные данные хранятся в FileSystem.Сделки в Apache Jackrabbit и Spring

До сих пор я эта функциональная конфигурация 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 в repository.xml файле.

Что мне нужно сделать, чтобы успешно выполнять транзакции в репозитории JackRabbit? Какую технологию я должен использовать?

Я бегу весной 3.1, Jackrabbit 2.3.3 на Tomcat/Glassfish. И я не хочу использовать устаревшие пружинные модули.

ответ

3

Мы используем аналогичную установку (Jackrabbit, Spring, Tomcat) с Jencks в качестве поставщика 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> 
+1

Любая идея о том, как это работает, когда у вас есть удаленный Jackrabbit репо? – rwijngaa