This is an automated email from the git hooks/post-receive script. New commit to branch feature/8158-configureTokenCache in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 4cc8ba7365ffd284518d69379d6beab5ed6e33d9 Author: Sylvain Bavencoff <bavencoff@codelutin.com> Date: Tue Mar 22 15:12:04 2016 +0100 Dans la conf serveur ajout de sessionExpirationDelay et de sessio,MaximumSize pour la cache des tokens (see #8158). --- .../ird/observe/application/web/ObserveWebApplicationContext.java | 2 +- .../web/configuration/ObserveWebApplicationConfiguration.java | 4 ++++ .../configuration/ObserveWebApplicationConfigurationOption.java | 3 ++- .../web/security/ObserveWebSecurityApplicationContext.java | 8 ++++++-- .../web/security/ObserveWebSecurityAuthenticationTokenCache.java | 8 ++++---- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java index 230be19..b5333af 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/ObserveWebApplicationContext.java @@ -97,7 +97,7 @@ public class ObserveWebApplicationContext implements Closeable { users = usersHelper.load(databases, applicationConfiguration.getUsersConfigurationFile()); // init security application context - securityApplicationContext = new ObserveWebSecurityApplicationContext(); + securityApplicationContext = new ObserveWebSecurityApplicationContext(applicationConfiguration); Version modelVersion = applicationConfiguration.getModelVersion(); diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java index 933a4af..cf09da2 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfiguration.java @@ -111,6 +111,10 @@ public class ObserveWebApplicationConfiguration { return applicationConfig.getOptionAsFile(ObserveWebApplicationConfigurationOption.LOG4J_CONFIGURATION_FILE.getKey()); } + public int getSessionMaximumSize() { + return applicationConfig.getOptionAsInt(ObserveWebApplicationConfigurationOption.SESSION_MAXIMUM_SIZE.getKey()); + } + public int getSessionExpirationDelay() { return applicationConfig.getOptionAsInt(ObserveWebApplicationConfigurationOption.SESSION_EXPIRATION_DELAY.getKey()); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfigurationOption.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfigurationOption.java index 3205f03..2776124 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfigurationOption.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/configuration/ObserveWebApplicationConfigurationOption.java @@ -59,7 +59,8 @@ public enum ObserveWebApplicationConfigurationOption implements ConfigOptionDef LOG4J_CONFIGURATION_FILE("observeweb.log4jConfigurationFile", n("observeweb.log4jConfigurationFile.description"), "${observeweb.baseDirectory}/observeweb-log4j.conf", String.class), DATABASES_CONFIGURATION_FILE("observeweb.databasesConfigurationFile", n("observeweb.databasesConfigurationFile.description"), "${observeweb.baseDirectory}/databases.yml", File.class), USERS_CONFIGURATION_FILE("observeweb.usersConfigurationFile", n("observeweb.usersConfigurationFile.description"), "${observeweb.baseDirectory}/users.yml", File.class), - SESSION_EXPIRATION_DELAY("observeweb.sessionExpirationDelay", n("observeweb.sessionExpirationDelay.description"), "60" /* en minutes */, int.class); + SESSION_EXPIRATION_DELAY("observeweb.sessionExpirationDelay", n("observeweb.sessionExpirationDelay.description"), "60" /* en minutes */, int.class), + SESSION_MAXIMUM_SIZE("observeweb.sessionMaximumSize", n("observeweb.sessionMaximumSize.description"), "10000", int.class); ObserveWebApplicationConfigurationOption(String key, String description, String defaultValue, Class<?> type) { this.key = key; diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java index bf57c8b..10bd677 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityApplicationContext.java @@ -26,6 +26,7 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Strings; import com.google.common.collect.ImmutableMap; +import fr.ird.observe.application.web.configuration.ObserveWebApplicationConfiguration; import fr.ird.observe.application.web.configuration.db.ObserveWebDatabase; import fr.ird.observe.application.web.configuration.db.ObserveWebDatabaseRole; import fr.ird.observe.application.web.configuration.db.ObserveWebDatabases; @@ -88,8 +89,11 @@ public class ObserveWebSecurityApplicationContext implements Closeable { protected ObserveWebUsers<?> users; - public ObserveWebSecurityApplicationContext() { - this.authenticateCache = new ObserveWebSecurityAuthenticationTokenCache(); + public ObserveWebSecurityApplicationContext(ObserveWebApplicationConfiguration configuration) { + this.authenticateCache = new ObserveWebSecurityAuthenticationTokenCache( + configuration.getSessionMaximumSize(), + configuration.getSessionExpirationDelay() + ); this.dataSourceConfigurationFactory = new ObserveDataSourceConfigurationMainFactory(); } diff --git a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityAuthenticationTokenCache.java b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityAuthenticationTokenCache.java index a38f9d2..8f744b7 100644 --- a/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityAuthenticationTokenCache.java +++ b/observe-application-web/src/main/java/fr/ird/observe/application/web/security/ObserveWebSecurityAuthenticationTokenCache.java @@ -51,11 +51,11 @@ public class ObserveWebSecurityAuthenticationTokenCache implements Closeable { */ protected final Cache<String, ObserveDataSourceConfigurationAndConnection> authenticationTokenCache; - public ObserveWebSecurityAuthenticationTokenCache() { + public ObserveWebSecurityAuthenticationTokenCache(int maximumSize, int expireDelay) { this.authenticationTokenCache = CacheBuilder.newBuilder() - .maximumSize(10000) - .expireAfterWrite(20, TimeUnit.MINUTES) - .expireAfterAccess(20, TimeUnit.MINUTES) + .maximumSize(maximumSize) + .expireAfterWrite(expireDelay, TimeUnit.MINUTES) + .expireAfterAccess(expireDelay, TimeUnit.MINUTES) .removalListener(new RemovalListener<String, ObserveDataSourceConfigurationAndConnection>() { @Override -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.