mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Made AVMRepository Springable. Modularized Spring configuration a bit.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3380 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
304
config/alfresco/avm-base-context.xml
Normal file
304
config/alfresco/avm-base-context.xml
Normal file
@@ -0,0 +1,304 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN//EN"
|
||||
"http://www.springframework.org/dtd/spring-beans.dtd">
|
||||
|
||||
<beans>
|
||||
|
||||
<!-- Datasource -->
|
||||
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
|
||||
<property name="driverClass">
|
||||
<value>${db.driver}</value>
|
||||
</property>
|
||||
<property name="jdbcUrl">
|
||||
<value>${db.url}</value>
|
||||
</property>
|
||||
<property name="user">
|
||||
<value>${db.username}</value>
|
||||
</property>
|
||||
<property name="password">
|
||||
<value>${db.password}</value>
|
||||
</property>
|
||||
<property name="initialPoolSize">
|
||||
<value>${db.pool.initial}</value>
|
||||
</property>
|
||||
<property name="maxPoolSize" >
|
||||
<value>${db.pool.max}</value>
|
||||
</property>
|
||||
<property name="numHelperThreads">
|
||||
<value>1</value>
|
||||
</property>
|
||||
<property name="idleConnectionTestPeriod">
|
||||
<value>60</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- The SessionFactory for hibernate. -->
|
||||
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
|
||||
<property name="dataSource">
|
||||
<ref bean="dataSource"/>
|
||||
</property>
|
||||
<property name="hibernateProperties">
|
||||
<props>
|
||||
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
|
||||
<prop key="hibernate.current_session_context_class">${hibernate.current_session_context_class}</prop>
|
||||
<prop key="hibernate.connection.isolation">${hibernate.connection.isolation}</prop>
|
||||
<prop key="hibernate.default_batch_fetch_size">${hibernate.default_batch_fetch_size}</prop>
|
||||
<prop key="hibernate.jdbc.batch_versioned_data">${hibernate.jdbc.batch_versioned_data}</prop>
|
||||
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
|
||||
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
|
||||
</props>
|
||||
</property>
|
||||
<property name="mappingResources">
|
||||
<list>
|
||||
<value>org/alfresco/repo/avm/hibernate/AVM.hbm.xml</value>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="nodeIssuer" class="org.alfresco.repo.avm.Issuer"
|
||||
depends-on="retryingTransaction,avmContext" init-method="init">
|
||||
<property name="name">
|
||||
<value>node</value>
|
||||
</property>
|
||||
<property name="retryingTransaction">
|
||||
<ref bean="retryingTransaction"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="contentIssuer" class="org.alfresco.repo.avm.Issuer"
|
||||
depends-on="retryingTransaction,avmContext" init-method="init">
|
||||
<property name="name">
|
||||
<value>content</value>
|
||||
</property>
|
||||
<property name="retryingTransaction">
|
||||
<ref bean="retryingTransaction"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="layerIssuer" class="org.alfresco.repo.avm.Issuer"
|
||||
depends-on="retryingTransaction,avmContext" init-method="init">
|
||||
<property name="name">
|
||||
<value>layer</value>
|
||||
</property>
|
||||
<property name="retryingTransaction">
|
||||
<ref bean="retryingTransaction"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="issuerDAO" class="org.alfresco.repo.avm.hibernate.IssuerDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="nodeDAO" class="org.alfresco.repo.avm.hibernate.AVMNodeDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmStoreDAO" class="org.alfresco.repo.avm.hibernate.AVMStoreDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="versionRootDAO" class="org.alfresco.repo.avm.hibernate.VersionRootDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="fileContentDAO" class="org.alfresco.repo.avm.hibernate.FileContentDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="childEntryDAO" class="org.alfresco.repo.avm.hibernate.ChildEntryDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="historyLinkDAO" class="org.alfresco.repo.avm.hibernate.HistoryLinkDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="mergeLinkDAO" class="org.alfresco.repo.avm.hibernate.MergeLinkDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="deletedChildDAO" class="org.alfresco.repo.avm.hibernate.DeletedChildDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="newInAVMStoreDAO" class="org.alfresco.repo.avm.hibernate.NewInAVMStoreDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmNodePropertyDAO" class="org.alfresco.repo.avm.hibernate.AVMNodePropertyDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmStorePropertyDAO" class="org.alfresco.repo.avm.hibernate.AVMStorePropertyDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmContext" class="org.alfresco.repo.avm.AVMContext">
|
||||
<property name="issuerDAO">
|
||||
<ref bean="issuerDAO"/>
|
||||
</property>
|
||||
<property name="nodeDAO">
|
||||
<ref bean="nodeDAO"/>
|
||||
</property>
|
||||
<property name="avmStoreDAO">
|
||||
<ref bean="avmStoreDAO"/>
|
||||
</property>
|
||||
<property name="versionRootDAO">
|
||||
<ref bean="versionRootDAO"/>
|
||||
</property>
|
||||
<property name="fileContentDAO">
|
||||
<ref bean="fileContentDAO"/>
|
||||
</property>
|
||||
<property name="childEntryDAO">
|
||||
<ref bean="childEntryDAO"/>
|
||||
</property>
|
||||
<property name="historyLinkDAO">
|
||||
<ref bean="historyLinkDAO"/>
|
||||
</property>
|
||||
<property name="mergeLinkDAO">
|
||||
<ref bean="mergeLinkDAO"/>
|
||||
</property>
|
||||
<property name="deletedChildDAO">
|
||||
<ref bean="deletedChildDAO"/>
|
||||
</property>
|
||||
<property name="newInAVMStoreDAO">
|
||||
<ref bean="newInAVMStoreDAO"/>
|
||||
</property>
|
||||
<property name="avmNodePropertyDAO">
|
||||
<ref bean="avmNodePropertyDAO"/>
|
||||
</property>
|
||||
<property name="avmStorePropertyDAO">
|
||||
<ref bean="avmStorePropertyDAO"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- The HibernateTransactionManager -->
|
||||
<bean id="transactionManager"
|
||||
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
|
||||
<property name="dataSource">
|
||||
<ref bean="dataSource"/>
|
||||
</property>
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- A read only DefaultTransactionDefinition -->
|
||||
<bean id="readTransactionDefinition"
|
||||
class="org.springframework.transaction.support.DefaultTransactionDefinition">
|
||||
<property name="propagationBehaviorName">
|
||||
<value>PROPAGATION_REQUIRES_NEW</value>
|
||||
</property>
|
||||
<property name="isolationLevelName">
|
||||
<value>ISOLATION_READ_COMMITTED</value>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<value>true</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- A write DefaultTransactionDefinition -->
|
||||
<bean id="writeTransactionDefinition"
|
||||
class="org.springframework.transaction.support.DefaultTransactionDefinition">
|
||||
<property name="propagationBehaviorName">
|
||||
<value>PROPAGATION_REQUIRES_NEW</value>
|
||||
</property>
|
||||
<property name="isolationLevelName">
|
||||
<value>ISOLATION_READ_COMMITTED</value>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<value>false</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- The Hibernate Transaction wrapper. -->
|
||||
<bean id="retryingTransaction"
|
||||
class="org.alfresco.repo.avm.hibernate.HibernateRetryingTransaction">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
<property name="transactionManager">
|
||||
<ref bean="transactionManager"/>
|
||||
</property>
|
||||
<property name="readTransactionDefinition">
|
||||
<ref bean="readTransactionDefinition"/>
|
||||
</property>
|
||||
<property name="writeTransactionDefinition">
|
||||
<ref bean="writeTransactionDefinition"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="orphanReaper" class="org.alfresco.repo.avm.OrphanReaper"
|
||||
init-method="init" destroy-method="shutDown" depends-on="avmService">
|
||||
<property name="inactiveBaseSleep">
|
||||
<value>4000</value>
|
||||
</property>
|
||||
<property name="activeBaseSleep">
|
||||
<value>1000</value>
|
||||
</property>
|
||||
<property name="batchSize">
|
||||
<value>50</value>
|
||||
</property>
|
||||
<property name="retryingTransaction">
|
||||
<ref bean="retryingTransaction"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmService" class="org.alfresco.repo.avm.AVMServiceImpl"
|
||||
init-method="init">
|
||||
<property name="storage">
|
||||
<value>${avm.storage}</value>
|
||||
</property>
|
||||
<property name="initialize">
|
||||
<value>${avm.initialize}</value>
|
||||
</property>
|
||||
<property name="retryingTransaction">
|
||||
<ref bean="retryingTransaction"/>
|
||||
</property>
|
||||
<property name="avmRepository">
|
||||
<ref bean="avmRepository"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmRepository" class="org.alfresco.repo.avm.AVMRepository"
|
||||
init-method="init">
|
||||
<property name="storage">
|
||||
<value>${avm.storage}</value>
|
||||
</property>
|
||||
<property name="nodeIssuer">
|
||||
<ref bean="nodeIssuer"/>
|
||||
</property>
|
||||
<property name="contentIssuer">
|
||||
<ref bean="contentIssuer"/>
|
||||
</property>
|
||||
<property name="layerIssuer">
|
||||
<ref bean="layerIssuer"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
</beans>
|
||||
|
@@ -13,239 +13,7 @@
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- A read only DefaultTransactionDefinition -->
|
||||
<bean id="readTransactionDefinition"
|
||||
class="org.springframework.transaction.support.DefaultTransactionDefinition">
|
||||
<property name="propagationBehaviorName">
|
||||
<value>PROPAGATION_REQUIRES_NEW</value>
|
||||
</property>
|
||||
<property name="isolationLevelName">
|
||||
<value>ISOLATION_READ_COMMITTED</value>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<value>true</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- A write DefaultTransactionDefinition -->
|
||||
<bean id="writeTransactionDefinition"
|
||||
class="org.springframework.transaction.support.DefaultTransactionDefinition">
|
||||
<property name="propagationBehaviorName">
|
||||
<value>PROPAGATION_REQUIRES_NEW</value>
|
||||
</property>
|
||||
<property name="isolationLevelName">
|
||||
<value>ISOLATION_READ_COMMITTED</value>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<value>false</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- Datasource -->
|
||||
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
|
||||
<property name="driverClass">
|
||||
<value>${db.driver}</value>
|
||||
</property>
|
||||
<property name="jdbcUrl">
|
||||
<value>${db.url}</value>
|
||||
</property>
|
||||
<property name="user">
|
||||
<value>${db.username}</value>
|
||||
</property>
|
||||
<property name="password">
|
||||
<value>${db.password}</value>
|
||||
</property>
|
||||
<property name="initialPoolSize" >
|
||||
<value>${db.pool.initial}</value>
|
||||
</property>
|
||||
<property name="maxPoolSize" >
|
||||
<value>${db.pool.max}</value>
|
||||
</property>
|
||||
<property name="numHelperThreads" >
|
||||
<value>1</value>
|
||||
</property>
|
||||
<property name="idleConnectionTestPeriod">
|
||||
<value>60</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- The SessionFactory for hibernate. -->
|
||||
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
|
||||
<property name="dataSource">
|
||||
<ref bean="dataSource"/>
|
||||
</property>
|
||||
<property name="hibernateProperties">
|
||||
<props>
|
||||
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
|
||||
<prop key="hibernate.current_session_context_class">${hibernate.current_session_context_class}</prop>
|
||||
<prop key="hibernate.connection.isolation">${hibernate.connection.isolation}</prop>
|
||||
<prop key="hibernate.default_batch_fetch_size">${hibernate.default_batch_fetch_size}</prop>
|
||||
<prop key="hibernate.jdbc.batch_versioned_data">${hibernate.jdbc.batch_versioned_data}</prop>
|
||||
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
|
||||
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
|
||||
</props>
|
||||
</property>
|
||||
<property name="mappingResources">
|
||||
<list>
|
||||
<value>org/alfresco/repo/avm/hibernate/AVM.hbm.xml</value>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="issuerDAO" class="org.alfresco.repo.avm.hibernate.IssuerDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="nodeDAO" class="org.alfresco.repo.avm.hibernate.AVMNodeDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmStoreDAO" class="org.alfresco.repo.avm.hibernate.AVMStoreDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="versionRootDAO" class="org.alfresco.repo.avm.hibernate.VersionRootDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="fileContentDAO" class="org.alfresco.repo.avm.hibernate.FileContentDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="childEntryDAO" class="org.alfresco.repo.avm.hibernate.ChildEntryDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="historyLinkDAO" class="org.alfresco.repo.avm.hibernate.HistoryLinkDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="mergeLinkDAO" class="org.alfresco.repo.avm.hibernate.MergeLinkDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="deletedChildDAO" class="org.alfresco.repo.avm.hibernate.DeletedChildDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="newInAVMStoreDAO" class="org.alfresco.repo.avm.hibernate.NewInAVMStoreDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmNodePropertyDAO" class="org.alfresco.repo.avm.hibernate.AVMNodePropertyDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmStorePropertyDAO" class="org.alfresco.repo.avm.hibernate.AVMStorePropertyDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmContext" class="org.alfresco.repo.avm.AVMContext">
|
||||
<property name="issuerDAO">
|
||||
<ref bean="issuerDAO"/>
|
||||
</property>
|
||||
<property name="nodeDAO">
|
||||
<ref bean="nodeDAO"/>
|
||||
</property>
|
||||
<property name="avmStoreDAO">
|
||||
<ref bean="avmStoreDAO"/>
|
||||
</property>
|
||||
<property name="versionRootDAO">
|
||||
<ref bean="versionRootDAO"/>
|
||||
</property>
|
||||
<property name="fileContentDAO">
|
||||
<ref bean="fileContentDAO"/>
|
||||
</property>
|
||||
<property name="childEntryDAO">
|
||||
<ref bean="childEntryDAO"/>
|
||||
</property>
|
||||
<property name="historyLinkDAO">
|
||||
<ref bean="historyLinkDAO"/>
|
||||
</property>
|
||||
<property name="mergeLinkDAO">
|
||||
<ref bean="mergeLinkDAO"/>
|
||||
</property>
|
||||
<property name="deletedChildDAO">
|
||||
<ref bean="deletedChildDAO"/>
|
||||
</property>
|
||||
<property name="newInAVMStoreDAO">
|
||||
<ref bean="newInAVMStoreDAO"/>
|
||||
</property>
|
||||
<property name="avmNodePropertyDAO">
|
||||
<ref bean="avmNodePropertyDAO"/>
|
||||
</property>
|
||||
<property name="avmStorePropertyDAO">
|
||||
<ref bean="avmStorePropertyDAO"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- The HibernateTransactionManager -->
|
||||
<bean id="transactionManager"
|
||||
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
|
||||
<property name="dataSource">
|
||||
<ref bean="dataSource"/>
|
||||
</property>
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- The Hibernate Transaction wrapper. -->
|
||||
<bean id="retryingTransaction"
|
||||
class="org.alfresco.repo.avm.hibernate.HibernateRetryingTransaction">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
<property name="transactionManager">
|
||||
<ref bean="transactionManager"/>
|
||||
</property>
|
||||
<property name="readTransactionDefinition">
|
||||
<ref bean="readTransactionDefinition"/>
|
||||
</property>
|
||||
<property name="writeTransactionDefinition">
|
||||
<ref bean="writeTransactionDefinition"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="orphanReaper" class="org.alfresco.repo.avm.OrphanReaper"
|
||||
init-method="init" destroy-method="shutDown" depends-on="avmService">
|
||||
<property name="inactiveBaseSleep">
|
||||
<value>30000</value>
|
||||
</property>
|
||||
<property name="activeBaseSleep">
|
||||
<value>1000</value>
|
||||
</property>
|
||||
<property name="batchSize">
|
||||
<value>50</value>
|
||||
</property>
|
||||
<property name="retryingTransaction">
|
||||
<ref bean="retryingTransaction"/>
|
||||
</property>
|
||||
</bean>
|
||||
<import resource="classpath:alfresco/avm-base-context.xml"/>
|
||||
|
||||
<bean id="bulkLoader" class="org.alfresco.repo.avm.util.BulkLoader">
|
||||
<property name="avmService">
|
||||
@@ -253,19 +21,6 @@
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmService" class="org.alfresco.repo.avm.AVMServiceImpl"
|
||||
init-method="init">
|
||||
<property name="storage">
|
||||
<value>build/test-results/storage</value>
|
||||
</property>
|
||||
<property name="initialize">
|
||||
<value>${avm.initialize}</value>
|
||||
</property>
|
||||
<property name="retryingTransaction">
|
||||
<ref bean="retryingTransaction"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="interactiveConsole" class="org.alfresco.repo.avm.AVMInterpreter">
|
||||
<property name="avmService">
|
||||
<ref bean="avmService"/>
|
||||
|
@@ -14,4 +14,5 @@ hibernate.jdbc.batch_versioned_data=true
|
||||
hibernate.cache.use_second_level_cache=true
|
||||
hibernate.hbm2ddl.auto=update
|
||||
# AVM specific properties.
|
||||
avm.storage=build/test-results/storage
|
||||
avm.initialize=false
|
||||
|
@@ -13,250 +13,6 @@
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- Datasource -->
|
||||
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
|
||||
<property name="driverClass">
|
||||
<value>${db.driver}</value>
|
||||
</property>
|
||||
<property name="jdbcUrl">
|
||||
<value>${db.url}</value>
|
||||
</property>
|
||||
<property name="user">
|
||||
<value>${db.username}</value>
|
||||
</property>
|
||||
<property name="password">
|
||||
<value>${db.password}</value>
|
||||
</property>
|
||||
<property name="initialPoolSize">
|
||||
<value>${db.pool.initial}</value>
|
||||
</property>
|
||||
<property name="maxPoolSize" >
|
||||
<value>${db.pool.max}</value>
|
||||
</property>
|
||||
<property name="numHelperThreads">
|
||||
<value>1</value>
|
||||
</property>
|
||||
<property name="idleConnectionTestPeriod">
|
||||
<value>60</value>
|
||||
</property>
|
||||
</bean>
|
||||
<import resource="classpath:alfresco/avm-base-context.xml"/>
|
||||
|
||||
<!-- The SessionFactory for hibernate. -->
|
||||
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
|
||||
<property name="dataSource">
|
||||
<ref bean="dataSource"/>
|
||||
</property>
|
||||
<property name="hibernateProperties">
|
||||
<props>
|
||||
<prop key="hibernate.dialect">${hibernate.dialect}</prop>
|
||||
<prop key="hibernate.current_session_context_class">${hibernate.current_session_context_class}</prop>
|
||||
<prop key="hibernate.connection.isolation">${hibernate.connection.isolation}</prop>
|
||||
<prop key="hibernate.default_batch_fetch_size">${hibernate.default_batch_fetch_size}</prop>
|
||||
<prop key="hibernate.jdbc.batch_versioned_data">${hibernate.jdbc.batch_versioned_data}</prop>
|
||||
<prop key="hibernate.cache.use_second_level_cache">${hibernate.cache.use_second_level_cache}</prop>
|
||||
<prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
|
||||
</props>
|
||||
</property>
|
||||
<property name="mappingResources">
|
||||
<list>
|
||||
<value>org/alfresco/repo/avm/hibernate/AVM.hbm.xml</value>
|
||||
</list>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="issuerDAO" class="org.alfresco.repo.avm.hibernate.IssuerDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="nodeDAO" class="org.alfresco.repo.avm.hibernate.AVMNodeDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmStoreDAO" class="org.alfresco.repo.avm.hibernate.AVMStoreDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="versionRootDAO" class="org.alfresco.repo.avm.hibernate.VersionRootDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="fileContentDAO" class="org.alfresco.repo.avm.hibernate.FileContentDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="childEntryDAO" class="org.alfresco.repo.avm.hibernate.ChildEntryDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="historyLinkDAO" class="org.alfresco.repo.avm.hibernate.HistoryLinkDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="mergeLinkDAO" class="org.alfresco.repo.avm.hibernate.MergeLinkDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="deletedChildDAO" class="org.alfresco.repo.avm.hibernate.DeletedChildDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="newInAVMStoreDAO" class="org.alfresco.repo.avm.hibernate.NewInAVMStoreDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmNodePropertyDAO" class="org.alfresco.repo.avm.hibernate.AVMNodePropertyDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmStorePropertyDAO" class="org.alfresco.repo.avm.hibernate.AVMStorePropertyDAOHibernate">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmContext" class="org.alfresco.repo.avm.AVMContext">
|
||||
<property name="issuerDAO">
|
||||
<ref bean="issuerDAO"/>
|
||||
</property>
|
||||
<property name="nodeDAO">
|
||||
<ref bean="nodeDAO"/>
|
||||
</property>
|
||||
<property name="avmStoreDAO">
|
||||
<ref bean="avmStoreDAO"/>
|
||||
</property>
|
||||
<property name="versionRootDAO">
|
||||
<ref bean="versionRootDAO"/>
|
||||
</property>
|
||||
<property name="fileContentDAO">
|
||||
<ref bean="fileContentDAO"/>
|
||||
</property>
|
||||
<property name="childEntryDAO">
|
||||
<ref bean="childEntryDAO"/>
|
||||
</property>
|
||||
<property name="historyLinkDAO">
|
||||
<ref bean="historyLinkDAO"/>
|
||||
</property>
|
||||
<property name="mergeLinkDAO">
|
||||
<ref bean="mergeLinkDAO"/>
|
||||
</property>
|
||||
<property name="deletedChildDAO">
|
||||
<ref bean="deletedChildDAO"/>
|
||||
</property>
|
||||
<property name="newInAVMStoreDAO">
|
||||
<ref bean="newInAVMStoreDAO"/>
|
||||
</property>
|
||||
<property name="avmNodePropertyDAO">
|
||||
<ref bean="avmNodePropertyDAO"/>
|
||||
</property>
|
||||
<property name="avmStorePropertyDAO">
|
||||
<ref bean="avmStorePropertyDAO"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- The HibernateTransactionManager -->
|
||||
<bean id="transactionManager"
|
||||
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
|
||||
<property name="dataSource">
|
||||
<ref bean="dataSource"/>
|
||||
</property>
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- A read only DefaultTransactionDefinition -->
|
||||
<bean id="readTransactionDefinition"
|
||||
class="org.springframework.transaction.support.DefaultTransactionDefinition">
|
||||
<property name="propagationBehaviorName">
|
||||
<value>PROPAGATION_REQUIRES_NEW</value>
|
||||
</property>
|
||||
<property name="isolationLevelName">
|
||||
<value>ISOLATION_READ_COMMITTED</value>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<value>true</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- A write DefaultTransactionDefinition -->
|
||||
<bean id="writeTransactionDefinition"
|
||||
class="org.springframework.transaction.support.DefaultTransactionDefinition">
|
||||
<property name="propagationBehaviorName">
|
||||
<value>PROPAGATION_REQUIRES_NEW</value>
|
||||
</property>
|
||||
<property name="isolationLevelName">
|
||||
<value>ISOLATION_READ_COMMITTED</value>
|
||||
</property>
|
||||
<property name="readOnly">
|
||||
<value>false</value>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<!-- The Hibernate Transaction wrapper. -->
|
||||
<bean id="retryingTransaction"
|
||||
class="org.alfresco.repo.avm.hibernate.HibernateRetryingTransaction">
|
||||
<property name="sessionFactory">
|
||||
<ref bean="sessionFactory"/>
|
||||
</property>
|
||||
<property name="transactionManager">
|
||||
<ref bean="transactionManager"/>
|
||||
</property>
|
||||
<property name="readTransactionDefinition">
|
||||
<ref bean="readTransactionDefinition"/>
|
||||
</property>
|
||||
<property name="writeTransactionDefinition">
|
||||
<ref bean="writeTransactionDefinition"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="orphanReaper" class="org.alfresco.repo.avm.OrphanReaper"
|
||||
init-method="init" destroy-method="shutDown" depends-on="avmService">
|
||||
<property name="inactiveBaseSleep">
|
||||
<value>4000</value>
|
||||
</property>
|
||||
<property name="activeBaseSleep">
|
||||
<value>1000</value>
|
||||
</property>
|
||||
<property name="batchSize">
|
||||
<value>50</value>
|
||||
</property>
|
||||
<property name="retryingTransaction">
|
||||
<ref bean="retryingTransaction"/>
|
||||
</property>
|
||||
</bean>
|
||||
|
||||
<bean id="avmService" class="org.alfresco.repo.avm.AVMServiceImpl"
|
||||
init-method="init">
|
||||
<property name="storage">
|
||||
<value>build/test-results/storage</value>
|
||||
</property>
|
||||
<property name="initialize">
|
||||
<value>${avm.initialize}</value>
|
||||
</property>
|
||||
<property name="retryingTransaction">
|
||||
<ref bean="retryingTransaction"/>
|
||||
</property>
|
||||
</bean>
|
||||
</beans>
|
||||
|
@@ -14,4 +14,5 @@ hibernate.jdbc.batch_versioned_data=true
|
||||
hibernate.cache.use_second_level_cache=true
|
||||
hibernate.hbm2ddl.auto=create
|
||||
# AVM specific properties.
|
||||
avm.storage=build/test-results/storage
|
||||
avm.initialize=true
|
||||
|
@@ -35,7 +35,7 @@ import org.alfresco.service.namespace.QName;
|
||||
* the implementors of the operations specified by AVMService.
|
||||
* @author britt
|
||||
*/
|
||||
class AVMRepository
|
||||
public class AVMRepository
|
||||
{
|
||||
/**
|
||||
* The single instance of AVMRepository.
|
||||
@@ -68,25 +68,56 @@ class AVMRepository
|
||||
private String fStorage;
|
||||
|
||||
/**
|
||||
* Create a new one. It's given issuers and a storage directory.
|
||||
* @param nodeIssuer
|
||||
* @param contentIssuer
|
||||
* @param layerIssuer
|
||||
* @param storage
|
||||
* Create a new one.
|
||||
*/
|
||||
public AVMRepository(Issuer nodeIssuer,
|
||||
Issuer contentIssuer,
|
||||
Issuer layerIssuer,
|
||||
String storage)
|
||||
public AVMRepository()
|
||||
{
|
||||
fStorage = storage;
|
||||
fNodeIssuer = nodeIssuer;
|
||||
fContentIssuer = contentIssuer;
|
||||
fLayerIssuer = layerIssuer;
|
||||
fLookupCount = new ThreadLocal<Integer>();
|
||||
fgInstance = this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the storage directory.
|
||||
* @param storage The absolute path to content storage directory.
|
||||
*/
|
||||
public void setStorage(String storage)
|
||||
{
|
||||
fStorage = storage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the node issuer. For Spring.
|
||||
* @param nodeIssuer The issuer.
|
||||
*/
|
||||
public void setNodeIssuer(Issuer nodeIssuer)
|
||||
{
|
||||
fNodeIssuer = nodeIssuer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the content issuer. For Spring.
|
||||
* @param contentIssuer The issuer.
|
||||
*/
|
||||
public void setContentIssuer(Issuer contentIssuer)
|
||||
{
|
||||
fContentIssuer = contentIssuer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the layer issuer. For Spring.
|
||||
* @param layerIssuer The issuer.
|
||||
*/
|
||||
public void setLayerIssuer(Issuer layerIssuer)
|
||||
{
|
||||
fLayerIssuer = layerIssuer;
|
||||
}
|
||||
|
||||
public void init()
|
||||
{
|
||||
File storageDir = new File(fStorage);
|
||||
storageDir.mkdirs();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a file.
|
||||
* @param path The path to the containing directory.
|
||||
@@ -97,7 +128,6 @@ class AVMRepository
|
||||
fLookupCount.set(1);
|
||||
String[] pathParts = SplitPath(path);
|
||||
AVMStore rep = getAVMStoreByName(pathParts[0]);
|
||||
// fSession.get().lock(rep, LockMode.UPGRADE);
|
||||
return rep.createFile(pathParts[1], name);
|
||||
}
|
||||
|
||||
|
@@ -56,21 +56,6 @@ public class AVMServiceImpl implements AVMService
|
||||
*/
|
||||
private String fStorage;
|
||||
|
||||
/**
|
||||
* The node id issuer.
|
||||
*/
|
||||
private Issuer fNodeIssuer;
|
||||
|
||||
/**
|
||||
* The content id issuer.
|
||||
*/
|
||||
private Issuer fContentIssuer;
|
||||
|
||||
/**
|
||||
* The layer id issuer.
|
||||
*/
|
||||
private Issuer fLayerIssuer;
|
||||
|
||||
/**
|
||||
* Whether the tables should be dropped and created.
|
||||
*/
|
||||
@@ -83,43 +68,23 @@ public class AVMServiceImpl implements AVMService
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the storage directory.
|
||||
* @param storage The full path to the storage directory.
|
||||
*/
|
||||
public void setStorage(String storage)
|
||||
{
|
||||
fStorage = storage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Final initialization of the service. Must be called only on a
|
||||
* fully initialized instance.
|
||||
*/
|
||||
public void init()
|
||||
{
|
||||
try
|
||||
{
|
||||
fTransaction.perform(
|
||||
new RetryingTransactionCallback()
|
||||
{
|
||||
public void perform()
|
||||
{
|
||||
IssuerDAO dao = AVMContext.fgInstance.fIssuerDAO;
|
||||
Long val = dao.getNodeIssuerValue();
|
||||
fNodeIssuer = new Issuer(val == null ? 0L : val + 1L);
|
||||
val = dao.getContentIssuerValue();
|
||||
fContentIssuer = new Issuer(val == null ? 0L : val + 1L);
|
||||
val = dao.getLayerIssuerValue();
|
||||
fLayerIssuer = new Issuer(val == null ? 0L : val + 1L);
|
||||
}
|
||||
}, false);
|
||||
fAVMRepository = new AVMRepository(fNodeIssuer,
|
||||
fContentIssuer,
|
||||
fLayerIssuer,
|
||||
fStorage);
|
||||
fgLogger.info("Initialized AVMService and AVMRepository");
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
fgLogger.fatal("Failed to initialize AVMService", e);
|
||||
// TODO Abort in some useful way.
|
||||
}
|
||||
if (fInitialize)
|
||||
{
|
||||
File storageDir = new File(fStorage);
|
||||
storageDir.mkdirs();
|
||||
createAVMStore("main");
|
||||
fgLogger.info("Created new main AVMStore");
|
||||
}
|
||||
@@ -134,15 +99,6 @@ public class AVMServiceImpl implements AVMService
|
||||
fTransaction = txn;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the location of file storage.
|
||||
* @param storage
|
||||
*/
|
||||
public void setStorage(String storage)
|
||||
{
|
||||
fStorage = storage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether we should create an initial AVMStore.
|
||||
* @param initialize
|
||||
@@ -152,6 +108,15 @@ public class AVMServiceImpl implements AVMService
|
||||
fInitialize = initialize;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the repository reference. For Spring.
|
||||
* @param avmRepository The repository reference.
|
||||
*/
|
||||
public void setAvmRepository(AVMRepository avmRepository)
|
||||
{
|
||||
fAVMRepository = avmRepository;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get an InputStream from a file.
|
||||
* @param version The version to look under.
|
||||
|
@@ -21,7 +21,7 @@ package org.alfresco.repo.avm;
|
||||
* This is a helper class that knows how to issue identifiers.
|
||||
* @author britt
|
||||
*/
|
||||
class Issuer
|
||||
public class Issuer
|
||||
{
|
||||
/**
|
||||
* The next number to issue.
|
||||
@@ -29,12 +29,64 @@ class Issuer
|
||||
private long fNext;
|
||||
|
||||
/**
|
||||
* Rich constructor.
|
||||
* @param next The next number to issue.
|
||||
* The name of this issuer.
|
||||
*/
|
||||
public Issuer(long next)
|
||||
private String fName;
|
||||
|
||||
/**
|
||||
* The transactional wrapper.
|
||||
*/
|
||||
private RetryingTransaction fTransaction;
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
*/
|
||||
public Issuer()
|
||||
{
|
||||
fNext = next;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the name of this issuer. For Spring.
|
||||
* @param name The name to set.
|
||||
*/
|
||||
public void setName(String name)
|
||||
{
|
||||
fName = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the transactional wrapper.
|
||||
* @param retryingTransaction The transactional wrapper.
|
||||
*/
|
||||
public void setRetryingTransaction(RetryingTransaction retryingTransaction)
|
||||
{
|
||||
fTransaction = retryingTransaction;
|
||||
}
|
||||
|
||||
/**
|
||||
* After the database is up, get our value.
|
||||
*/
|
||||
public void init()
|
||||
{
|
||||
class TxnCallback implements RetryingTransactionCallback
|
||||
{
|
||||
public Long value;
|
||||
|
||||
public void perform()
|
||||
{
|
||||
value = AVMContext.fgInstance.fIssuerDAO.getIssuerValue(fName);
|
||||
}
|
||||
};
|
||||
TxnCallback doit = new TxnCallback();
|
||||
fTransaction.perform(doit, false);
|
||||
if (doit.value == null)
|
||||
{
|
||||
fNext = 0L;
|
||||
}
|
||||
else
|
||||
{
|
||||
fNext = doit.value;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -24,17 +24,9 @@ package org.alfresco.repo.avm;
|
||||
public interface IssuerDAO
|
||||
{
|
||||
/**
|
||||
* Get the node Issuer value.
|
||||
* Get the Issuer value.
|
||||
* @param The name of the issuer.
|
||||
* @return The largest id issued by the named issuer.
|
||||
*/
|
||||
public Long getNodeIssuerValue();
|
||||
|
||||
/**
|
||||
* Get the content Issuer value.
|
||||
*/
|
||||
public Long getContentIssuerValue();
|
||||
|
||||
/**
|
||||
* Get the layer Issuer value.
|
||||
*/
|
||||
public Long getLayerIssuerValue();
|
||||
public Long getIssuerValue(String name);
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@
|
||||
package org.alfresco.repo.avm.hibernate;
|
||||
|
||||
|
||||
import org.alfresco.repo.avm.AVMException;
|
||||
import org.alfresco.repo.avm.IssuerDAO;
|
||||
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
|
||||
|
||||
@@ -36,18 +37,28 @@ public class IssuerDAOHibernate extends HibernateDaoSupport implements
|
||||
super();
|
||||
}
|
||||
|
||||
public Long getContentIssuerValue()
|
||||
/**
|
||||
* Get the largest issued id for the named issuer.
|
||||
* @param The name of the issuer.
|
||||
* @return The value or null if the issuer is brand new.
|
||||
* @throws AVMException on an invalid name.
|
||||
*/
|
||||
public Long getIssuerValue(String name)
|
||||
{
|
||||
return (Long)getSession().createQuery("select max(fc.id) from FileContentImpl fc").uniqueResult();
|
||||
}
|
||||
|
||||
public Long getLayerIssuerValue()
|
||||
{
|
||||
return (Long)getSession().createQuery("select max(an.layerID) from AVMNodeImpl an").uniqueResult();
|
||||
}
|
||||
|
||||
public Long getNodeIssuerValue()
|
||||
{
|
||||
return (Long)getSession().createQuery("select max(an.id) from AVMNodeImpl an").uniqueResult();
|
||||
if (name.equals("content"))
|
||||
{
|
||||
return (Long)getSession().
|
||||
createQuery("select max(fc.id) from FileContentImpl fc").uniqueResult();
|
||||
}
|
||||
else if (name.equals("layer"))
|
||||
{
|
||||
return (Long)getSession().
|
||||
createQuery("select max(an.layerID) from AVMNodeImpl an").uniqueResult();
|
||||
}
|
||||
else if (name.equals("node"))
|
||||
{
|
||||
return (Long)getSession().createQuery("select max(an.id) from AVMNodeImpl an").uniqueResult();
|
||||
}
|
||||
throw new AVMException("Unknown issuer type: " + name);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user