Files
alfresco-community-repo/config/alfresco/core-services-context.xml
Dave Ward 6bb340048a Merged V4.1-BUG-FIX to HEAD
44740: BDE-91 - added ability to enable and disable some RMI services through config.
   44744: Incorrect service url used for Links RSS feed. Code tidy up.
   44754: Fix performance degradation when using SSO header based authentication config:
    - The SlingshotAlfrescoConnector used when configuring header based SSO for Share was not extending the RequestCachingConnector class - means it was missing out on the free caching of identical GET requests per page render
    - This makes a huge difference to the number of small requests required to build pages in Share 4.0+, particularly dashboards and document details pages.
   44759: ALF-17245: Merged PATCHES/V3.4.10 to V4.1-BUG-FIX
      44104: Merged DEV to PATCHES/V3.4.10
         43953: MNT-214 : Modification date is lost when Excel 2003 is closed
            The modification date is now updated during rename operation.
      44711: Merged DEV to PATCHES/V3.4.10
         44699: MNT-214 : Modification date is lost when Excel 2003 is closed
            A fix to save modification date in shuffle rename operation.
   44760: ALF-17246: Merged V3.4-BUG-FIX to V4.1-BUG-FIX
      44757: ALF-17073: Advanced search - Lucene query construction - Change between 3.4.9 and 3.4.10
      - In the fix to ALF-12666 followed by ALF-14699 we somehow lost the ability to distinguish ANDs from ORs. The 'additional attributes' should be part of an OR, but we still need to AND together multiple ORs if the AND operator is specified. 
   44761: Merged V3.4-BUG-FIX to V4.1-BUG-FIX (RECORD ONLY)
      44748: Merged PATCHES/V3.4.10 to V3.4-BUG-FIX
         42311: ALF-17235: Merged PATCHES/V4.0.2 to PATCHES/V3.4.10
            39939: ALF-15001: Gracefully handle stale NodeRefs in query results in DMDiscoveryServicePort
            - SOLR makes this more likely to occur
         44104: ALF-17236: Merged DEV to PATCHES/V3.4.10
            43953: MNT-214 : Modification date is lost when Excel 2003 is closed
               The modification date is now updated during rename operation.
         44415: ALF-17237: Merged DEV to PATCHES/V3.4.10
           MNT-211 : versionable aspect lost from .csv files edited over CIFS using Office 2003
         44711: ALF-17236: Merged DEV to PATCHES/V3.4.10
            44699: MNT-214 : Modification date is lost when Excel 2003 is closed
               A fix to save modification date in shuffle rename operation.
   44762: Merged V4.1 to V4.1-BUG-FIX
      44743: ALF-17117: Created article or publication cant be viewed on WQS site
         - Further corrections to locking to avoid deadlocks


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@44763 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2012-12-17 14:55:13 +00:00

1357 lines
55 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE beans PUBLIC '-//SPRING//DTD BEAN//EN' 'http://www.springframework.org/dtd/spring-beans.dtd'>
<!-- Core and miscellaneous bean definitions -->
<beans>
<bean id="hostConfigurableSocketFactory" class="org.alfresco.util.remote.server.socket.HostConfigurableSocketFactory">
<property name="host" value="${alfresco.rmi.services.host}" />
<property name="retries" value="${alfresco.rmi.services.retries}" />
</bean>
<bean id="baseServiceExporter" class="org.alfresco.util.remote.server.AlfrescoRMIServiceExporter" abstract="true">
<property name="registryPort" value="${alfresco.rmi.services.port}" />
<property name="registryServerSocketFactory" ref="hostConfigurableSocketFactory" />
<property name="registryClientSocketFactory" ref="hostConfigurableSocketFactory" />
</bean>
<!-- -->
<!-- PERSISTENCE -->
<!-- -->
<!-- Load runtime-dependent properties (e.g.: alfresco.jmx.dir). -->
<!-- Note: This bean relies on PropertyPlaceholderConfigurer (should be ordered before "shared-properties") -->
<bean id="runtimeProperties" class="org.alfresco.util.RuntimeSystemPropertiesSetter">
<property name="order">
<value>5</value>
</property>
</bean>
<!-- Ensure backward compatibility with installations that control custom properties through repository-properties -->
<bean id="legacyConfigPostProcessor" class="org.alfresco.repo.management.subsystems.LegacyConfigPostProcessor"/>
<!-- Global properties used in property expansion throughout the container, overridable via JNDI or System properties -->
<bean id="global-properties" class="org.alfresco.config.JndiPropertiesFactoryBean">
<property name="locations">
<list>
<value>classpath:alfresco/repository.properties</value>
<value>classpath:alfresco/domain/transaction.properties</value>
<!-- Enterprise defaults -->
<!-- Overrides supplied if this is an enterprise install (none exist for community) -->
<value>classpath*:alfresco/enterprise/repository.properties</value>
<!-- <value>classpath:alfresco/jndi.properties</value> -->
<!-- Overrides supplied by modules -->
<value>classpath*:alfresco/module/*/alfresco-global.properties</value>
<!-- Installer or user-provided defaults -->
<value>classpath*:alfresco-global.properties</value>
</list>
</property>
<property name="systemPropertiesModeName">
<value>SYSTEM_PROPERTIES_MODE_OVERRIDE</value>
</property>
<!-- Extra properties that have no defaults that we allow to be defined through JNDI or System properties -->
<property name="systemProperties">
<list>
<value>hibernate.dialect</value>
<value>hibernate.query.substitutions</value>
<value>hibernate.jdbc.use_get_generated_keys</value>
<value>hibernate.default_schema</value>
</list>
</property>
<property name="propertiesPersister">
<bean class="org.alfresco.config.AlfrescoPropertiesPersister"/>
</property>
</bean>
<bean id="common-placeholder-configurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" abstract="true">
<!-- Note: If you change these settings you may also want to change them in the LegacyConfigPostProcessor as well. -->
<property name="valueSeparator">
<null/>
</property>
<property name="ignoreUnresolvablePlaceholders">
<value>true</value>
</property>
<property name="searchSystemEnvironment">
<value>false</value>
</property>
<property name="propertiesPersister">
<bean class="org.alfresco.config.AlfrescoPropertiesPersister"/>
</property>
</bean>
<!-- Expand global properties and version information in bean definitions -->
<bean id="repository-properties" parent="common-placeholder-configurer">
<property name="locations">
<list>
<!-- Non-overridable version information -->
<value>classpath:alfresco/version.properties</value>
</list>
</property>
<property name="properties">
<ref bean="global-properties"/>
</property>
<!-- Do not allow version information to be overriden -->
<property name="localOverride">
<value>false</value>
</property>
<property name="systemPropertiesModeName">
<value>SYSTEM_PROPERTIES_MODE_NEVER</value>
</property>
<!-- Order before shared-properties to give you a chance to override its parameters here -->
<property name="order">
<value>6</value>
</property>
</bean>
<!-- Load properties that must be shared between the -->
<!-- Alfresco server and its remote clients. -->
<!-- -->
<!-- Note: This is done in a separate bean to make it -->
<!-- for users who have already overridden their -->
<!-- "repository-properties" in a dev-context.xml -->
<!-- or custom-db-and-data-context.xml file. -->
<bean id="shared-properties"
parent="common-placeholder-configurer" class="org.alfresco.config.JndiPropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:alfresco/alfresco-shared.properties</value>
</list>
</property>
<property name="order">
<value>10</value>
</property>
<property name="searchSystemEnvironment">
<value>false</value>
</property>
</bean>
<!-- Custom MBeanServer -->
<bean id="alfrescoMBeanServer" class="org.springframework.jmx.support.MBeanServerFactoryBean">
<property name="locateExistingServerIfPossible" value="${mbean.server.locateExistingServerIfPossible}" />
</bean>
<bean id="dynamicExporter" class="org.alfresco.repo.management.DynamicMBeanExporter">
<property name="server" ref="alfrescoMBeanServer"/>
</bean>
<!--
The local in process RMI registry which will be bound to the address in
java.rmi.server.hostname
-->
<bean id="registry"
class="org.springframework.remoting.rmi.RmiRegistryFactoryBean"
lazy-init="true">
<property name="port" value="${alfresco.rmi.services.port}"/>
<property name="clientSocketFactory" ref="hostConfigurableSocketFactory" />
<property name="serverSocketFactory" ref="hostConfigurableSocketFactory" />
</bean>
<!-- MBeanServer Connector (registers itself with custom alfrescoMBeanServer) -->
<bean id="jmxUrl" factory-bean="sysAdminParams" factory-method="subsituteHost">
<constructor-arg value="service:jmx:rmi://${alfresco.rmi.services.external.host}:${monitor.rmi.service.port}/jndi/rmi://${alfresco.rmi.services.host}:${alfresco.rmi.services.port}/alfresco/jmxrmi" />
</bean>
<bean id="serverConnector"
class="org.alfresco.mbeans.ConnectorServerFactory"
depends-on="registry">
<property name="server" ref="alfrescoMBeanServer"/>
<property name="objectName" value="connector:name=rmi"/>
<property name="serviceUrl" ref="jmxUrl" />
<property name="environment">
<map>
<!-- The following keys are only valid when sun jmx is used -->
<entry key="jmx.remote.x.password.file" value="${alfresco.jmx.dir}/alfresco-jmxrmi.password"/>
<entry key="jmx.remote.x.access.file" value="${alfresco.jmx.dir}/alfresco-jmxrmi.access"/>
<entry>
<key>
<value>jmx.remote.rmi.server.socket.factory</value>
</key>
<ref bean="hostConfigurableSocketFactory" />
</entry>
</map>
</property>
</bean>
<bean id="propertyBackedBeanRegistry" class="org.alfresco.repo.management.subsystems.DefaultPropertyBackedBeanRegistry"/>
<bean id="abstractPropertyBackedBean" class="org.alfresco.repo.management.subsystems.AbstractPropertyBackedBean"
abstract="true">
<property name="registry">
<ref local="propertyBackedBeanRegistry" />
</property>
<!-- Ensure that child application contexts propagate global default values -->
<property name="propertyDefaults">
<ref local="global-properties" />
</property>
</bean>
<bean id="exporter" class="org.springframework.jmx.export.MBeanExporter">
<property name="server" ref="alfrescoMBeanServer"/>
<property name="beans">
<map>
<!-- Used by Alfresco WCM Virtualisation server -->
<entry key="Alfresco:Name=VirtServerRegistry,Type=VirtServerRegistry" value-ref="VirtServerRegistry"/>
</map>
</property>
<property name="registrationBehaviorName" value="REGISTRATION_REPLACE_EXISTING"/>
</bean>
<!-- MBeans registered with alfrescoMBeanServer -->
<bean id="VirtServerRegistry"
class="org.alfresco.mbeans.VirtServerRegistry"
init-method="initialize" >
<!-- Authentication info to contact remote virtualization server -->
<!-- NOTE: -->
<!-- On the machine hosting the virtualization server, -->
<!-- $VIRTUAL_TOMCAT_HOME/conf/alfresco-jmxrmi.password and -->
<!-- $VIRTUAL_TOMCAT_HOME/conf/alfresco-jmxrmi.access -->
<!-- should have the same data as the corresponding files -->
<!-- contained here within the Alfresco webapp server. -->
<!-- By default, they do; however, if you change the password -->
<!-- file on one server, be sure to change it on the other. -->
<!-- -->
<!-- WARNING: -->
<!-- For security, be certain that *only* the uid under which -->
<!-- the servers run have read access to the password files -->
<!-- (e.g.: under Unix, chmod them to "400"). -->
<property name="passwordFile"
value="${alfresco.jmx.dir}/alfresco-jmxrmi.password"/>
<property name="accessFile"
value="${alfresco.jmx.dir}/alfresco-jmxrmi.access"/>
</bean>
<!--
http://wiki.alfresco.com/wiki/Developing_an_Alfresco_Module#log4j.properties
-->
<import resource="classpath:alfresco/logging-context.xml" />
<bean id="RepoServerMgmt" class="org.alfresco.repo.admin.RepoServerMgmt">
<property name="transactionService"><ref bean="transactionService"/></property>
<property name="authenticationService"><ref bean="authenticationService"/></property>
</bean>
<!-- Datasource bean -->
<bean id="defaultDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>${db.driver}</value>
</property>
<property name="url">
<value>${db.url}</value>
</property>
<property name="username">
<value>${db.username}</value>
</property>
<property name="password">
<value>${db.password}</value>
</property>
<property name="initialSize" >
<value>${db.pool.initial}</value>
</property>
<property name="maxActive" >
<value>${db.pool.max}</value>
</property>
<property name="minIdle" >
<value>${db.pool.min}</value>
</property>
<property name="maxIdle" >
<value>${db.pool.idle}</value>
</property>
<property name="defaultAutoCommit" >
<value>false</value>
</property>
<property name="defaultTransactionIsolation" >
<value>${db.txn.isolation}</value>
</property>
<property name="maxWait" >
<value>${db.pool.wait.max}</value>
</property>
<property name="validationQuery" >
<value>${db.pool.validate.query}</value>
</property>
<property name="timeBetweenEvictionRunsMillis" >
<value>${db.pool.evict.interval}</value>
</property>
<property name="minEvictableIdleTimeMillis" >
<value>${db.pool.evict.idle.min}</value>
</property>
<property name="testOnBorrow" >
<value>${db.pool.validate.borrow}</value>
</property>
<property name="testOnReturn" >
<value>${db.pool.validate.return}</value>
</property>
<property name="testWhileIdle" >
<value>${db.pool.evict.validate}</value>
</property>
<property name="removeAbandoned" >
<value>${db.pool.abandoned.detect}</value>
</property>
<property name="removeAbandonedTimeout" >
<value>${db.pool.abandoned.time}</value>
</property>
<property name="poolPreparedStatements" >
<value>${db.pool.statements.enable}</value>
</property>
<property name="maxOpenPreparedStatements" >
<value>${db.pool.statements.max}</value>
</property>
<property name="logAbandoned" >
<value>${db.pool.abandoned.log}</value>
</property>
</bean>
<bean id="dataSource" class="org.alfresco.config.JndiObjectFactoryBean">
<property name="jndiName">
<value>java:comp/env/jdbc/dataSource</value>
</property>
<property name="defaultObject">
<ref bean="defaultDataSource" />
</property>
</bean>
<!-- transaction service -->
<alias name="transactionService" alias="transactionComponent"/>
<bean id="transactionService" class="org.alfresco.repo.transaction.TransactionServiceImpl">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="authenticationContext">
<ref bean="authenticationContext" />
</property>
<property name="sysAdminParams">
<ref bean="sysAdminParams"/>
</property>
<property name="allowWrite">
<value>${server.transaction.allow-writes}</value>
</property>
<property name="maxRetries">
<value>${server.transaction.max-retries}</value>
</property>
<property name="minRetryWaitMs">
<value>${server.transaction.min-retry-wait-ms}</value>
</property>
<property name="maxRetryWaitMs">
<value>${server.transaction.max-retry-wait-ms}</value>
</property>
<property name="retryWaitIncrementMs">
<value>${server.transaction.wait-increment-ms}</value>
</property>
</bean>
<bean id="retryingTransactionHelper" class="org.alfresco.repo.transaction.RetryingTransactionHelper">
<property name="transactionService">
<ref bean="transactionService"/>
</property>
<property name="maxRetries">
<value>${server.transaction.max-retries}</value>
</property>
<property name="minRetryWaitMs">
<value>${server.transaction.min-retry-wait-ms}</value>
</property>
<property name="maxRetryWaitMs">
<value>${server.transaction.max-retry-wait-ms}</value>
</property>
<property name="retryWaitIncrementMs">
<value>${server.transaction.wait-increment-ms}</value>
</property>
</bean>
<!--
A special time-limited retrying transaction helper that will keep request times below
server.web.transaction.max-duration-ms
-->
<bean id="web.retryingTransactionHelper" class="org.alfresco.repo.transaction.RetryingTransactionHelper">
<property name="transactionService">
<ref bean="transactionService" />
</property>
<property name="maxRetries">
<value>${server.transaction.max-retries}</value>
</property>
<property name="minRetryWaitMs">
<value>${server.transaction.min-retry-wait-ms}</value>
</property>
<property name="maxRetryWaitMs">
<value>${server.transaction.max-retry-wait-ms}</value>
</property>
<property name="retryWaitIncrementMs">
<value>${server.transaction.wait-increment-ms}</value>
</property>
<property name="maxExecutionMs">
<value>${server.web.transaction.max-duration-ms}</value>
</property>
</bean>
<bean id="retryingWriteTxnAdvice" class="org.alfresco.repo.transaction.RetryingTransactionAdvice">
<property name="txnHelper">
<ref bean="retryingTransactionHelper"/>
</property>
<property name="readOnly">
<value>false</value>
</property>
<property name="requiresNew">
<value>false</value>
</property>
</bean>
<bean id="retryingReadTxnAdvice" class="org.alfresco.repo.transaction.RetryingTransactionAdvice">
<property name="txnHelper">
<ref bean="retryingTransactionHelper"/>
</property>
<property name="readOnly">
<value>true</value>
</property>
<property name="requiresNew">
<value>false</value>
</property>
</bean>
<bean id="checkTxnAdvice" class="org.alfresco.repo.transaction.CheckTransactionAdvice" />
<!--
General-purpose registry for CannedQueryFactory instances.
Normally you would keep a registry per application area.
-->
<bean id="cannedQueryRegistry" class="org.alfresco.util.registry.NamedObjectRegistry">
<property name="storageType" value="org.alfresco.query.CannedQueryFactory"/>
</bean>
<!-- -->
<!-- I18N -->
<!-- -->
<bean id="resourceBundles" class="org.alfresco.i18n.ResourceBundleBootstrapComponent">
<property name="resourceBundles">
<list>
<value>alfresco.messages.system-messages</value>
<value>alfresco.messages.module-messages</value>
<value>alfresco.messages.dictionary-messages</value>
<value>alfresco.messages.version-service</value>
<value>alfresco.messages.permissions-service</value>
<value>alfresco.messages.content-service</value>
<value>alfresco.messages.coci-service</value>
<value>alfresco.messages.discussion-messages</value>
<value>alfresco.messages.template-service</value>
<value>alfresco.messages.templates-messages</value>
<value>alfresco.messages.lock-service</value>
<value>alfresco.messages.patch-service</value>
<value>alfresco.messages.period-provider</value>
<value>alfresco.messages.schema-update</value>
<value>alfresco.messages.webdav-messages</value>
<value>alfresco.messages.copy-service</value>
<value>alfresco.messages.avm-messages</value>
<value>alfresco.messages.content-filter-languages</value>
<value>alfresco.messages.jbpm-engine-messages</value>
<value>alfresco.messages.activiti-engine-messages</value>
<value>alfresco.messages.wdr-messages</value>
<value>alfresco.messages.subscription-service</value>
<value>alfresco.messages.replication</value>
<value>alfresco.messages.categories</value>
</list>
</property>
</bean>
<!-- Repo-based Message Service (based on Core I18NUtil) -->
<bean id="messageService" class="org.alfresco.repo.i18n.MessageServiceImpl">
<property name="tenantService">
<ref bean="tenantService"/>
</property>
<property name="namespaceService">
<ref bean="namespaceService"/>
</property>
<property name="nodeService">
<ref bean="nodeService" />
</property>
<property name="contentService">
<ref bean="contentService"/>
</property>
<property name="resourceBundleBaseNamesCache">
<ref bean="resourceBundleBaseNamesCache"/>
</property>
<property name="loadedResourceBundlesCache">
<ref bean="loadedResourceBundlesCache"/>
</property>
<property name="messagesCache">
<ref bean="messagesCache"/>
</property>
</bean>
<!-- -->
<!-- Lock Service -->
<!-- -->
<bean id="lockService" class="org.alfresco.repo.lock.LockServiceImpl" init-method="init">
<property name="nodeService" ref="nodeService" />
<property name="tenantService" ref="tenantService" />
<property name="policyComponent" ref="policyComponent" />
<property name="authenticationService" ref="authenticationService" />
<property name="searchService" ref="admSearchService" />
<property name="behaviourFilter" ref="policyBehaviourFilter" />
</bean>
<!-- -->
<!-- Version Service -->
<!-- -->
<bean id="versionService" class="org.alfresco.repo.version.Version2ServiceImpl" init-method="initialise">
<property name="nodeService">
<ref bean="NodeService" />
</property>
<property name="dbNodeService">
<ref bean="mtAwareNodeService" />
</property>
<property name="searcher">
<ref bean="versionSearchService" />
</property>
<property name="dictionaryService">
<ref bean="dictionaryService" />
</property>
<property name="policyComponent">
<ref bean="policyComponent" />
</property>
<property name="policyBehaviourFilter">
<ref bean="policyBehaviourFilter" />
</property>
<property name="permissionService">
<ref bean="permissionService" />
</property>
<property name="onlyUseDeprecatedV1">
<value>${version.store.onlyUseDeprecatedV1}</value>
</property>
<property name="versionMigrator">
<ref bean="versionMigrator"/>
</property>
<property name="versionComparatorClass">
<value>${version.store.versionComparatorClass}</value>
</property>
</bean>
<bean id="versionNodeService" class="org.alfresco.repo.version.Node2ServiceImpl">
<property name="contentDataDAO">
<ref bean="contentDataDAO" />
</property>
<property name="dbNodeService">
<ref bean="mtAwareNodeService" />
</property>
<property name="dictionaryService">
<ref bean="dictionaryService" />
</property>
</bean>
<bean id="serialVersionLabelPolicy" class="org.alfresco.repo.version.common.versionlabel.SerialVersionLabelPolicy" >
</bean>
<bean id="registerContentWithVersionService" class="org.alfresco.repo.version.VersionServiceVersionLabelRegistrationBean" init-method="register">
<property name="versionService">
<ref bean="versionService" />
</property>
<property name="namespacePrefixResolver">
<ref bean="namespaceService" />
</property>
<property name="typeQName">
<value>cm:content</value>
</property>
<property name="policy">
<ref bean="serialVersionLabelPolicy" />
</property>
</bean>
<bean id="registerMLContainerWithVersionService" class="org.alfresco.repo.version.VersionServiceVersionLabelRegistrationBean" init-method="register">
<property name="versionService">
<ref bean="versionService" />
</property>
<property name="namespacePrefixResolver">
<ref bean="namespaceService" />
</property>
<property name="typeQName">
<value>cm:mlContainer</value>
</property>
<property name="policy">
<ref bean="serialVersionLabelPolicy" />
</property>
</bean>
<!-- -->
<bean id="versionMigrator" class="org.alfresco.repo.version.VersionMigrator" init-method="init">
<property name="dbNodeService">
<ref bean="mtAwareNodeService" />
</property>
<property name="versionNodeService">
<ref bean="versionNodeService" />
</property>
<property name="version2ServiceImpl">
<ref bean="versionService" />
</property>
<property name="policyBehaviourFilter">
<ref bean="policyBehaviourFilter" />
</property>
<property name="dictionaryService">
<ref bean="dictionaryService" />
</property>
<property name="transactionService">
<ref bean="transactionService"/>
</property>
<property name="ruleService">
<ref bean="ruleService" />
</property>
<property name="jobLockService">
<ref bean="jobLockService"/>
</property>
<property name="loggingInterval">
<value>500</value>
</property>
</bean>
<bean id="versionableAspect" class="org.alfresco.repo.version.VersionableAspect" init-method="init">
<property name="policyComponent">
<ref bean="policyComponent" />
</property>
<property name="versionService">
<ref bean="versionService"/>
</property>
<property name="nodeService">
<ref bean="nodeService"/>
</property>
<property name="lockService" ref="lockService" />
<property name="dictionaryDAO">
<ref bean="dictionaryDAO"/>
</property>
<property name="namespacePrefixResolver">
<ref bean="namespaceService"/>
</property>
<property name="excludedOnUpdateProps">
<list>
<value>webdav:opaquelocktoken</value>
<value>webdav:sharedLockTokens</value>
<value>webdav:lockDepth</value>
<value>webdav:lockScope</value>
<value>cm:likesRatingSchemeTotal</value>
<value>cm:likesRatingSchemeCount</value>
<value>cm:fiveStarRatingSchemeCount</value>
<value>cm:fiveStarRatingSchemeTotal</value>
<!-- ALF-12205 - do not version on comments -->
<value>fm:commentCount</value>
<value>cm:expiryDate</value>
<!-- MNT-181 -->
<value>sys:clientVisibilityMask</value>
</list>
</property>
<property name="enableAutoVersioning" value="${version.store.enableAutoVersioning}" />
</bean>
<!-- -->
<!-- Data Dictionary -->
<!-- -->
<!-- Constraint Registry -->
<bean id="cm:constraintRegistry" class="org.alfresco.repo.dictionary.constraint.ConstraintRegistry" />
<bean id="namespaceDAO" class="org.alfresco.repo.dictionary.NamespaceDAOImpl">
<property name="tenantService">
<ref bean="tenantService"/>
</property>
<property name="namespaceRegistryCache">
<ref bean="prefixesCache"/>
</property>
</bean>
<bean id="dictionaryDAO" class="org.alfresco.repo.dictionary.DictionaryDAOImpl">
<constructor-arg index="0">
<ref bean="namespaceDAO" />
</constructor-arg>
<property name="tenantService">
<ref bean="tenantService"/>
</property>
<property name="dictionaryRegistryCache">
<ref bean="compiledModelsCache"/>
</property>
<property name="defaultAnalyserResourceBundleName">
<value>alfresco/model/dataTypeAnalyzers</value>
</property>
</bean>
<bean id="dictionaryService" class="org.alfresco.repo.dictionary.DictionaryComponent" depends-on="dictionaryBootstrap">
<property name="dictionaryDAO">
<ref bean="dictionaryDAO" />
</property>
<property name="messageLookup">
<ref bean="messageService" />
</property>
</bean>
<bean id="namespaceService" class="org.alfresco.repo.dictionary.DictionaryNamespaceComponent"
depends-on="dictionaryDAO">
<property name="namespaceDAO">
<ref bean="namespaceDAO" />
</property>
</bean>
<bean id="dictionaryModelBootstrap" class="org.alfresco.repo.dictionary.DictionaryBootstrap" init-method="bootstrap" abstract="true">
<property name="dictionaryDAO"><ref local="dictionaryDAO"/></property>
<property name="tenantService">
<ref bean="tenantService"/>
</property>
</bean>
<bean id="dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="resourceBundles">
<property name="models">
<list>
<!-- System models -->
<value>alfresco/model/dictionaryModel.xml</value>
<value>alfresco/model/systemModel.xml</value>
<value>org/alfresco/repo/security/authentication/userModel.xml</value>
<!-- Content models -->
<value>alfresco/model/contentModel.xml</value>
<value>alfresco/model/bpmModel.xml</value>
<value>alfresco/model/wcmModel.xml</value>
<value>alfresco/model/forumModel.xml</value>
<value>alfresco/model/imapModel.xml</value>
<value>alfresco/model/transferModel.xml</value>
<!-- Content models -->
<value>alfresco/model/applicationModel.xml</value>
<value>alfresco/model/wcmAppModel.xml</value>
<!-- Implementation models -->
<value>org/alfresco/repo/action/actionModel.xml</value>
<value>org/alfresco/repo/rule/ruleModel.xml</value>
<!-- Version models -->
<value>org/alfresco/repo/version/version_model.xml</value> <!-- deprecated -->
<value>org/alfresco/repo/version/version2_model.xml</value>
<!-- Email model -->
<value>alfresco/model/emailServerModel.xml</value>
<!-- Calendar model -->
<value>alfresco/model/calendarModel.xml</value>
<!-- Blog Integration model -->
<value>alfresco/model/blogIntegrationModel.xml</value>
<!-- Links model -->
<value>alfresco/model/linksModel.xml</value>
<!-- Remote Credentials model -->
<value>alfresco/model/remoteCredentialsModel.xml</value>
<!-- Share Data Lists model -->
<value>alfresco/model/datalistModel.xml</value>
<!-- QuickShare (aka PublicView) -->
<value>alfresco/model/quickShareModel.xml</value>
</list>
</property>
<property name="labels">
<list>
<value>alfresco/messages/system-model</value>
<value>alfresco/messages/dictionary-model</value>
<value>alfresco/messages/content-model</value>
<value>alfresco/messages/bpm-messages</value>
<value>alfresco/messages/application-model</value>
<value>alfresco/messages/forum-model</value>
<value>alfresco/messages/email-server-model</value>
<value>alfresco/messages/data-list-model</value>
<value>alfresco/messages/transfer-model</value>
<value>alfresco/messages/wcmapp-model</value>
<value>alfresco/messages/publishing-model</value>
</list>
</property>
</bean>
<!-- TODO - deprecate and replace with mechanism that does not rely on init-method (see AR-2207) -->
<bean id="extension.dictionaryBootstrap" parent="dictionaryModelBootstrap" depends-on="dictionaryBootstrap">
<property name="models">
<list>
<value>alfresco/model/defaultCustomModel.xml</value>
</list>
</property>
</bean>
<!-- -->
<!-- CheckOut/CheckIn Service -->
<!-- -->
<bean id="checkOutCheckInService" class="org.alfresco.repo.coci.CheckOutCheckInServiceImpl" init-method="init">
<property name="nodeService" ref="nodeService" />
<property name="versionService" ref="versionService" />
<property name="ruleService" ref="ruleService" />
<property name="lockService" ref="LockService" />
<property name="ownableService" ref="OwnableService" />
<property name="copyService" ref="CopyService" />
<property name="authenticationService" ref="authenticationService" />
<property name="fileFolderService" ref="fileFolderService" />
<property name="policyComponent" ref="policyComponent" />
<property name="behaviourFilter" ref="policyBehaviourFilter" />
</bean>
<bean id="workingCopyAspect" class="org.alfresco.repo.coci.WorkingCopyAspect" init-method="init">
<property name="policyComponent" ref="policyComponent" />
<property name="nodeService" ref="NodeService" />
<property name="lockService" ref="LockService" />
<property name="checkOutCheckInService" ref="CheckoutCheckinService" />
<property name="policyBehaviourFilter" ref="policyBehaviourFilter" />
</bean>
<bean id="checkedOutAspect" class="org.alfresco.repo.coci.CheckedOutAspect" init-method="init">
<property name="policyComponent" ref="policyComponent" />
</bean>
<!-- Multilingual Document-->
<bean id="multilingualDocumentAspect" class="org.alfresco.repo.model.ml.MultilingualDocumentAspect" init-method="init">
<property name="policyComponent">
<ref bean="policyComponent" />
</property>
<property name="nodeService">
<ref bean="nodeService" />
</property>
<property name="multilingualContentService">
<ref bean="multilingualContentService" />
</property>
</bean>
<!-- Empty translation -->
<bean id="emptyTranslationAspect" class="org.alfresco.repo.model.ml.EmptyTranslationAspect" init-method="init">
<property name="policyComponent">
<ref bean="policyComponent" />
</property>
<property name="nodeService">
<ref bean="mlAwareNodeService" />
</property>
</bean>
<!-- Multilingual Container -->
<bean id="mlContainerType" class="org.alfresco.repo.model.ml.MLContainerType" init-method="init">
<property name="policyComponent">
<ref bean="policyComponent" />
</property>
<property name="nodeService">
<ref bean="mlAwareNodeService" />
</property>
<property name="multilingualContentService">
<ref bean="multilingualContentService" />
</property>
</bean>
<!-- Referenceable -->
<bean id="referenceableAspect" class="org.alfresco.repo.node.ReferenceableAspect" init-method="init">
<property name="policyComponent" ref="policyComponent" />
</bean>
<!-- Temporary Aspect -->
<bean id="temporaryAspect" class="org.alfresco.repo.node.TemporaryAspect" init-method="init">
<property name="policyComponent" ref="policyComponent" />
</bean>
<!-- Temporary Aspect -->
<bean id="pendingDeleteAspect" class="org.alfresco.repo.node.PendingDeleteAspect" init-method="init">
<property name="policyComponent" ref="policyComponent" />
</bean>
<!-- Configurable service -->
<bean id="configurableService" class="org.alfresco.repo.configuration.ConfigurableServiceImpl">
<property name="nodeService">
<ref bean="nodeService" />
</property>
</bean>
<!-- Registry service -->
<bean id="registryService" class="org.alfresco.repo.admin.registry.RegistryServiceImpl" init-method="init">
<property name="namespaceService">
<ref bean="namespaceService" />
</property>
<property name="searchService">
<ref bean="SearchService" />
</property>
<property name="nodeService">
<ref bean="NodeService" />
</property>
<!-- Root properties -->
<property name="registryStore">
<value>system://system</value>
</property>
<property name="registryRootPath">
<value>/sys:system-registry</value>
</property>
</bean>
<bean id="serverDescriptorDAO" class="org.alfresco.repo.descriptor.ServerDescriptorDAOImpl">
<property name="repositoryName">
<value>${repository.name}</value>
</property>
<property name="resource">
<value>classpath:alfresco/version.properties</value>
</property>
</bean>
<bean id="currentRepoDescriptorDAO" class="org.alfresco.repo.descriptor.RepositoryDescriptorDAOImpl">
<property name="name">
<value>system.descriptor.current.childname</value>
</property>
<property name="systemBootstrap">
<ref bean="systemBootstrap"/>
</property>
<property name="transactionService">
<ref bean="transactionService"/>
</property>
<property name="namespaceService">
<ref bean="namespaceService"/>
</property>
<property name="nodeService">
<ref bean="nodeService"/>
</property>
<property name="contentService">
<ref bean="contentService"/>
</property>
<property name="searchService">
<ref bean="searchService"/>
</property>
</bean>
<bean id="installedRepoDescriptorDAO" class="org.alfresco.repo.descriptor.RepositoryDescriptorDAOImpl">
<property name="name">
<value>system.descriptor.childname</value>
</property>
<property name="systemBootstrap">
<ref bean="systemBootstrap"/>
</property>
<property name="transactionService">
<ref bean="transactionService"/>
</property>
<property name="namespaceService">
<ref bean="namespaceService"/>
</property>
<property name="nodeService">
<ref bean="nodeService"/>
</property>
<property name="contentService">
<ref bean="contentService"/>
</property>
<property name="searchService">
<ref bean="searchService"/>
</property>
</bean>
<!-- Clustered (DB) locking Service -->
<bean id="jobLockService" class="org.alfresco.repo.lock.JobLockServiceImpl" destroy-method="shutdown">
<property name="retryingTransactionHelper">
<bean class="org.alfresco.repo.transaction.RetryingTransactionHelper">
<property name="transactionService">
<ref bean="transactionService"/>
</property>
<property name="maxRetries">
<value>10</value>
</property>
<property name="minRetryWaitMs">
<value>10</value>
</property>
<property name="maxRetryWaitMs">
<value>10</value>
</property>
<property name="retryWaitIncrementMs">
<value>1</value>
</property>
</bean>
</property>
<property name="lockDAO" ref="lockDAO" />
<property name="defaultRetryCount"><value>10</value></property>
<property name="defaultRetryWait"><value>20</value></property>
</bean>
<bean id="licenseResourceComponent" class="org.alfresco.repo.descriptor.LicenseResourceComponent">
<property name="externalLicenseLocation">
<value>${location.license.external}</value>
</property>
<property name="sharedLicenseLocation">
<value>${location.license.shared}</value>
</property>
<property name="embeddedLicenseLocation">
<value>${location.license.embedded}</value>
</property>
</bean>
<!-- Import the sys admin params from the sysAdmin subsystem -->
<bean id="sysAdminParams" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="sysAdmin" />
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.admin.SysAdminParams</value>
</list>
</property>
</bean>
<!-- Replacement for Spring's multicaster, that queues up events until the application is started -->
<bean id="applicationEventMulticaster" class="org.alfresco.repo.management.SafeApplicationEventMulticaster"/>
<bean id="repositoryState" class="org.alfresco.repo.admin.RepositoryState" />
<!-- index subsystem proxies -->
<bean id="Search" class="org.alfresco.repo.management.subsystems.SwitchableApplicationContextFactory" parent="abstractPropertyBackedBean">
<property name="autoStart">
<value>false</value>
</property>
<property name="category">
<value>Search</value>
</property>
<property name="sourceBeanName">
<value>${index.subsystem.name}</value>
</property>
<property name="instancePath">
<list>
<value>manager</value>
</list>
</property>
</bean>
<bean id="solrHttpClientFactory" class="org.alfresco.httpclient.HttpClientFactory" init-method="init">
<property name="secureCommsType" value="${solr.secureComms}"/>
<property name="sSLEncryptionParameters" ref="sslEncryptionParameters"/>
<property name="keyResourceLoader" ref="springKeyResourceLoader"/>
<property name="keyStoreParameters" ref="keyStoreParameters"/>
<property name="encryptionParameters" ref="md5EncryptionParameters"/>
<property name="host" value="${solr.host}"/>
<property name="port" value="${solr.port}"/>
<property name="sslPort" value="${solr.port.ssl}"/>
<property name="maxTotalConnections" value="${solr.max.total.connections}"/>
<property name="maxHostConnections" value="${solr.max.host.connections}"/>
</bean>
<bean id="solrAdminClient" class="org.alfresco.repo.solr.SOLRAdminClient" init-method="init" destroy-method="shutdown">
<property name="solrHost" value="${solr.host}"/>
<property name="solrPort" value="${solr.port}"/>
<property name="solrsslPort" value="${solr.port.ssl}"/>
<property name="solrUser" value="${solr.solrUser}"/>
<property name="solrPassword" value="${solr.solrPassword}"/>
<property name="solrPingCronExpression" value="${solr.solrPingCronExpression}"/>
<property name="solrConnectTimeout" value="${solr.solrConnectTimeout}"/>
<property name="httpClientFactory" ref="solrHttpClientFactory"/>
</bean>
<bean id="solr" class="org.alfresco.repo.search.impl.solr.SolrChildApplicationContextFactory" parent="abstractPropertyBackedBean">
<property name="autoStart">
<value>false</value>
</property>
<property name="compositePropertyTypes">
<map>
<entry key="solr.store.mappings">
<value>org.alfresco.repo.search.impl.solr.SolrStoreMapping</value>
</entry>
</map>
</property>
<property name="category">
<value>Search</value>
</property>
<property name="typeName">
<value>solr</value>
</property>
<property name="instancePath">
<list>
<value>managed</value>
<value>solr</value>
</list>
</property>
</bean>
<bean id="lucene" class="org.alfresco.repo.management.subsystems.ChildApplicationContextFactory" parent="abstractPropertyBackedBean">
<property name="autoStart">
<value>false</value>
</property>
<property name="category">
<value>Search</value>
</property>
<property name="typeName">
<value>lucene</value>
</property>
<property name="instancePath">
<list>
<value>managed</value>
<value>lucene</value>
</list>
</property>
</bean>
<bean id="noindex" class="org.alfresco.repo.management.subsystems.ChildApplicationContextFactory" parent="abstractPropertyBackedBean">
<property name="autoStart">
<value>false</value>
</property>
<property name="category">
<value>Search</value>
</property>
<property name="typeName">
<value>noindex</value>
</property>
<property name="instancePath">
<list>
<value>managed</value>
<value>noindex</value>
</list>
</property>
</bean>
<bean id="indexerAndSearcherFactory" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.indexerAndSearcherFactory</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.search.IndexerAndSearcher</value>
</list>
</property>
</bean>
<bean id="admSearchService" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.admSearchService</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.service.cmr.search.SearchService</value>
</list>
</property>
</bean>
<bean id="versionSearchService" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.versionSearchService</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.service.cmr.search.SearchService</value>
</list>
</property>
</bean>
<bean id="searchService" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.searchService</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.service.cmr.search.SearchService</value>
</list>
</property>
</bean>
<bean id="avmLuceneIndexerAndSearcherFactory" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.avmLuceneIndexerAndSearcherFactory</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.search.IndexerAndSearcher</value>
<value>org.alfresco.repo.search.impl.lucene.LuceneConfig</value>
</list>
</property>
</bean>
<bean id="admLuceneIndexerAndSearcherFactory" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory" depends-on="Search" >
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.admLuceneIndexerAndSearcherFactory</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.search.IndexerAndSearcher</value>
<value>org.alfresco.repo.search.impl.lucene.LuceneConfig</value>
</list>
</property>
</bean>
<bean id="admLuceneUnIndexedIndexerAndSearcherFactory" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.admLuceneUnIndexedIndexerAndSearcherFactory</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.search.IndexerAndSearcher</value>
<value>org.alfresco.repo.search.impl.lucene.LuceneConfig</value>
</list>
</property>
</bean>
<bean id="indexerComponent" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.indexerComponent</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.search.Indexer</value>
</list>
</property>
</bean>
<bean id="queryRegisterComponent" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.queryRegisterComponent</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.search.QueryRegisterComponent</value>
</list>
</property>
</bean>
<bean id="categoryService" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.categoryService</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.service.cmr.search.CategoryService</value>
</list>
</property>
</bean>
<bean id="indexRecoveryComponent" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.indexRecoveryComponent</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.node.index.IndexRecovery</value>
</list>
</property>
</bean>
<bean id="avmIndexRecoveryComponent" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.avmIndexRecoveryComponent</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.node.index.IndexRecovery</value>
</list>
</property>
</bean>
<!-- only required for lucene index test support -->
<bean id="LuceneFullTextSearchIndexer" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.luceneFullTextSearchIndexer</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.search.impl.lucene.fts.FullTextSearchIndexer</value>
</list>
</property>
</bean>
<bean id="ftsIndexerTrigger" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.ftsIndexerTrigger</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.util.TriggerBeanSPI</value>
<value>org.springframework.beans.factory.InitializingBean</value>
<value>org.springframework.beans.factory.DisposableBean</value>
</list>
</property>
</bean>
<bean id="adm.luceneQueryEngineImpl" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.adm.luceneQueryEngineImpl</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.search.impl.querymodel.QueryEngine</value>
</list>
</property>
</bean>
<bean id="indexConfigurationChecker" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.indexConfigurationChecker</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.admin.IndexConfigurationChecker</value>
</list>
</property>
</bean>
<bean id="solrTrackingComponent" class="org.alfresco.repo.management.subsystems.SubsystemProxyFactory">
<property name="sourceApplicationContextFactory">
<ref bean="Search" />
</property>
<property name="sourceBeanName">
<value>search.solrTrackingComponent</value>
</property>
<property name="interfaces">
<list>
<value>org.alfresco.repo.solr.SOLRTrackingComponent</value>
</list>
</property>
</bean>
</beans>