diff --git a/config/alfresco/web-scripts-application-context.xml b/config/alfresco/web-scripts-application-context.xml index 9b67f4a0a9..7b9851645a 100644 --- a/config/alfresco/web-scripts-application-context.xml +++ b/config/alfresco/web-scripts-application-context.xml @@ -118,6 +118,7 @@ + diff --git a/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java b/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java index a6fe4b88ce..9069bf9c0d 100644 --- a/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java +++ b/source/java/org/alfresco/repo/web/scripts/RepositoryContainer.java @@ -30,6 +30,7 @@ import java.util.Map; import javax.servlet.http.HttpServletResponse; +import org.alfresco.repo.cache.SimpleCache; import org.alfresco.repo.security.authentication.AuthenticationUtil; import org.alfresco.repo.tenant.TenantDeployer; import org.alfresco.repo.tenant.TenantDeployerService; @@ -76,8 +77,13 @@ public class RepositoryContainer extends AbstractRuntimeContainer implements Ten private DescriptorService descriptorService; private TenantDeployerService tenantDeployerService; - private Map tenantRegistries = new HashMap(0); + private SimpleCache webScriptsRegistryCache; + public void setWebScriptsRegistryCache(SimpleCache webScriptsRegistryCache) + { + this.webScriptsRegistryCache = webScriptsRegistryCache; + } + /** * @param repository */ @@ -317,21 +323,14 @@ public class RepositoryContainer extends AbstractRuntimeContainer implements Ten @Override public Registry getRegistry() { - if (tenantDeployerService.isEnabled()) - { - String tenantDomain = tenantDeployerService.getCurrentUserDomain(); - Registry registry = tenantRegistries.get(tenantDomain); - if (registry == null) - { - init(); - registry = tenantRegistries.get(tenantDomain); - } - return registry; - } - else - { - return super.getRegistry(); - } + String tenantDomain = tenantDeployerService.getCurrentUserDomain(); + Registry registry = webScriptsRegistryCache.get(tenantDomain); + if (registry == null) + { + init(); + registry = webScriptsRegistryCache.get(tenantDomain); + } + return registry; } /* (non-Javadoc) @@ -340,8 +339,8 @@ public class RepositoryContainer extends AbstractRuntimeContainer implements Ten @Override public void reset() { - tenantDeployerService.register(this); - super.reset(); + destroy(); + init(); } /* (non-Javadoc) @@ -365,9 +364,12 @@ public class RepositoryContainer extends AbstractRuntimeContainer implements Ten */ public void init() { + tenantDeployerService.register(this); + Registry registry = super.getRegistry().cloneEmpty(); - tenantRegistries.put(tenantDeployerService.getCurrentUserDomain(), registry); - registry.reset(); + webScriptsRegistryCache.put(tenantDeployerService.getCurrentUserDomain(), registry); + + super.reset(); } /* (non-Javadoc) @@ -375,6 +377,6 @@ public class RepositoryContainer extends AbstractRuntimeContainer implements Ten */ public void destroy() { - tenantRegistries.remove(tenantDeployerService.getCurrentUserDomain()); + webScriptsRegistryCache.remove(tenantDeployerService.getCurrentUserDomain()); } }