diff --git a/connections/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java b/connections/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java
index 3d0aab8..a5c7e97 100755
--- a/connections/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java
+++ b/connections/infinispan/src/main/java/org/keycloak/connections/infinispan/DefaultInfinispanConnectionProviderFactory.java
@@ -78,7 +78,11 @@ public class DefaultInfinispanConnectionProviderFactory implements InfinispanCon
private void initEmbedded() {
GlobalConfigurationBuilder gcb = new GlobalConfigurationBuilder();
- if (config.getBoolean("transport", false)) {
+
+ boolean clustered = config.getBoolean("clustered", false);
+ boolean async = config.getBoolean("async", true);
+
+ if (clustered) {
gcb.transport().defaultTransport();
}
cacheManager = new DefaultCacheManager(gcb.build());
@@ -86,35 +90,32 @@ public class DefaultInfinispanConnectionProviderFactory implements InfinispanCon
logger.debug("Started embedded Infinispan cache container");
- cacheManager.defineConfiguration("sessions", createConfiguration("sessions"));
- cacheManager.defineConfiguration("realms", createConfiguration("realms"));
- }
-
- private Configuration createConfiguration(String cacheName) {
- Config.Scope cacheConfig = config.scope("caches", cacheName);
- ConfigurationBuilder cb = new ConfigurationBuilder();
-
- String cacheMode = cacheConfig.get("cacheMode", "local");
- boolean async = cacheConfig.getBoolean("async", false);
-
- if (cacheMode.equalsIgnoreCase("replicated")) {
- cb.clustering().cacheMode(async ? CacheMode.REPL_ASYNC : CacheMode.REPL_SYNC);
- } else if (cacheMode.equalsIgnoreCase("distributed")) {
- cb.clustering().cacheMode(async ? CacheMode.DIST_ASYNC : CacheMode.DIST_SYNC);
-
- int owners = cacheConfig.getInt("owners", 2);
- int segments = cacheConfig.getInt("segments", 60);
-
- cb.clustering().hash().numOwners(owners).numSegments(segments);
- } else if (cacheMode.equalsIgnoreCase("invalidation")) {
- cb.clustering().cacheMode(async ? CacheMode.INVALIDATION_ASYNC : CacheMode.INVALIDATION_SYNC);
- } else if (!cacheMode.equalsIgnoreCase("local")) {
- throw new RuntimeException("Invalid cache mode " + cacheMode);
+ ConfigurationBuilder invalidationConfigBuilder = new ConfigurationBuilder();
+ if (clustered) {
+ invalidationConfigBuilder.clustering().cacheMode(async ? CacheMode.INVALIDATION_ASYNC : CacheMode.INVALIDATION_SYNC);
}
+ Configuration invalidationCacheConfiguration = invalidationConfigBuilder.build();
+
+ cacheManager.defineConfiguration("realms", invalidationCacheConfiguration);
+ cacheManager.defineConfiguration("users", invalidationCacheConfiguration);
+
+ ConfigurationBuilder sessionConfigBuilder = new ConfigurationBuilder();
+ if (clustered) {
+ String sessionsMode = config.get("sessionsMode", "distributed");
+ if (sessionsMode.equalsIgnoreCase("replicated")) {
+ sessionConfigBuilder.clustering().cacheMode(async ? CacheMode.REPL_ASYNC : CacheMode.REPL_SYNC);
+ } else if (sessionsMode.equalsIgnoreCase("distributed")) {
+ sessionConfigBuilder.clustering().cacheMode(async ? CacheMode.DIST_ASYNC : CacheMode.DIST_SYNC);
+ } else {
+ throw new RuntimeException("Invalid value for sessionsMode");
+ }
- logger.debugv("Configured cache {0} with mode={1}, async={2}", cacheName, cacheMode, async);
+ sessionConfigBuilder.clustering().hash()
+ .numOwners(config.getInt("sessionsOwners", 2))
+ .numSegments(config.getInt("sessionsSegments", 60)).build();
+ }
- return cb.build();
+ cacheManager.defineConfiguration("sessions", sessionConfigBuilder.build());
}
}