From ae34c40e712887b7846a1fac6c8355da01cb7a35 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Fri, 29 Jan 2016 09:35:30 +0100
Subject: [PATCH] OO-1867: upgrade of infinispan to version 7.2.3 (needed to
 deplyo on Widlfly 9)

---
 pom.xml                                       |  12 +-
 .../cache/infinispan/InfinispanCacher.java    |   2 +-
 .../dispatcher/AuthenticatedDispatcher.java   |   4 +-
 .../org/olat/repository/RepositoryEntry.java  |   6 +-
 .../olat/repository/RepositoryManager.java    |  14 +-
 src/main/resources/infinispan-config.xml      | 308 ++++++++----------
 6 files changed, 153 insertions(+), 193 deletions(-)

diff --git a/pom.xml b/pom.xml
index 1051780a12b..a293d00a56e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -64,13 +64,13 @@
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<targetJdk>1.8</targetJdk>
-		<org.springframework.version>3.2.15.RELEASE</org.springframework.version>
+		<org.springframework.version>3.2.16.RELEASE</org.springframework.version>
 		<org.hibernate.version>4.3.11.Final</org.hibernate.version>
 		<com.sun.jersey.version>1.17.1</com.sun.jersey.version>
 		<jackson.version>1.9.2</jackson.version>
-		<org.mysql.version>5.1.37</org.mysql.version>
-		<org.postgresql.version>9.4-1206-jdbc42</org.postgresql.version>
-		<org.infinispan.version>6.0.2.Final</org.infinispan.version>
+		<org.mysql.version>5.1.38</org.mysql.version>
+		<org.postgresql.version>9.4.1207</org.postgresql.version>
+		<org.infinispan.version>7.2.3.Final</org.infinispan.version>
 		<lucene.version>4.8.0</lucene.version>
 		<version.selenium>2.47.1</version.selenium>
 		<activemq.version>5.11.1</activemq.version>
@@ -2091,11 +2091,11 @@
 			<groupId>xerces</groupId>
 			<artifactId>xercesImpl</artifactId>
 			<version>2.9.1</version>
-			<!-- fxdiff: FXOLAT-243  prevents duplicate -->
+			<!-- prevents duplicate -->
 			<exclusions>
   				<exclusion>
   					<groupId>xerces</groupId>
-						<artifactId>xmlParserAPIs</artifactId>
+					<artifactId>xmlParserAPIs</artifactId>
   				</exclusion>
   			</exclusions>
 		</dependency>
diff --git a/src/main/java/org/olat/core/util/cache/infinispan/InfinispanCacher.java b/src/main/java/org/olat/core/util/cache/infinispan/InfinispanCacher.java
index 7feae325fcb..5361f8a737d 100644
--- a/src/main/java/org/olat/core/util/cache/infinispan/InfinispanCacher.java
+++ b/src/main/java/org/olat/core/util/cache/infinispan/InfinispanCacher.java
@@ -70,7 +70,7 @@ public class InfinispanCacher implements Cacher {
 	private void createInfinispanConfiguration(String cacheName) {	
 		Configuration conf = cacheManager.getCacheConfiguration(cacheName);
 		if(conf == null) {
-			int maxEntries = 10000;
+			long maxEntries = 10000;
 			long maxIdle = 900000l;
 			
 			ConfigurationBuilder builder = new ConfigurationBuilder();
diff --git a/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java b/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java
index c20801732bb..66d68b7dab2 100644
--- a/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java
+++ b/src/main/java/org/olat/dispatcher/AuthenticatedDispatcher.java
@@ -225,7 +225,7 @@ public class AuthenticatedDispatcher implements Dispatcher {
 					
 					String[] split = restPart.split("/");
 					if(restPart.startsWith("repo/go")) {
-						businessPath = convertJumpInURL(restPart, ureq);
+						businessPath = convertJumpInURL(ureq);
 						processBusinessPath(businessPath, ureq, usess);
 					} else if (split.length > 0 && split.length % 2 == 0) {
 						businessPath = BusinessControlFactory.getInstance().formatFromURI(restPart);
@@ -265,7 +265,7 @@ public class AuthenticatedDispatcher implements Dispatcher {
 	 * @param ureq
 	 * @return
 	 */
-	private String convertJumpInURL(String requestPart, UserRequest ureq) {
+	private String convertJumpInURL(UserRequest ureq) {
 		String repoId = ureq.getParameter("rid");
 		String businessPath = "[RepositoryEntry:" + repoId + "]";
 		String par = ureq.getParameter("par");
diff --git a/src/main/java/org/olat/repository/RepositoryEntry.java b/src/main/java/org/olat/repository/RepositoryEntry.java
index 800e03a7034..810bef7a54b 100644
--- a/src/main/java/org/olat/repository/RepositoryEntry.java
+++ b/src/main/java/org/olat/repository/RepositoryEntry.java
@@ -70,8 +70,10 @@ import org.olat.resource.OLATResourceImpl;
 	@NamedQuery(name="getRepositoryEntryRoleAndDefaults", query="select membership.role, relGroup.defaultGroup from repositoryentry as v inner join v.groups as relGroup inner join relGroup.group as baseGroup inner join baseGroup.members as membership where v.key=:repoKey and membership.identity.key=:identityKey"),
 	@NamedQuery(name="filterRepositoryEntryMembership", query="select v.key, membership.identity.key from repositoryentry as v inner join v.groups as relGroup inner join relGroup.group as baseGroup inner join baseGroup.members as membership on membership.role in ('owner','coach','participant') where membership.identity.key=:identityKey and v.key in (:repositoryEntryKey)"),
 	@NamedQuery(name="loadRepositoryEntryByKey", query="select v from repositoryentry as v inner join fetch v.olatResource as ores inner join fetch v.statistics as statistics left join fetch v.lifecycle as lifecycle where v.key = :repoKey"),
-	@NamedQuery(name="loadRepositoryEntryByResourceKey", query="select v from repositoryentry as v inner join fetch v.olatResource as ores inner join fetch v.statistics as statistics left join fetch v.lifecycle as lifecycle where ores.key = :resourceKey")
-	
+	@NamedQuery(name="loadRepositoryEntryByResourceKey", query="select v from repositoryentry as v inner join fetch v.olatResource as ores inner join fetch v.statistics as statistics left join fetch v.lifecycle as lifecycle where ores.key = :resourceKey"),
+	@NamedQuery(name="getDisplayNameByOlatResourceRedId", query="select v.displayname from repositoryentry v inner join v.olatResource as ores where ores.resId=:resid"),
+	@NamedQuery(name="getDisplayNameByRepositoryEntryKey", query="select v.displayname from repositoryentry v where v.key=:reKey")
+
 })
 public class RepositoryEntry implements CreateInfo, Persistable , RepositoryEntryRef, ModifiedInfo, OLATResourceable {
 
diff --git a/src/main/java/org/olat/repository/RepositoryManager.java b/src/main/java/org/olat/repository/RepositoryManager.java
index 825d41963d3..77df0561f7a 100644
--- a/src/main/java/org/olat/repository/RepositoryManager.java
+++ b/src/main/java/org/olat/repository/RepositoryManager.java
@@ -394,14 +394,10 @@ public class RepositoryManager extends BasicManager {
 	 * @return the repositoryentry displayname or null if not found
 	 */
 	public String lookupDisplayNameByOLATResourceableId(Long resId) {
-		StringBuilder sb = new StringBuilder();
-		sb.append("select v.displayname from ").append(RepositoryEntry.class.getName()).append(" v ")
-		  .append(" inner join v.olatResource as ores")
-		  .append(" where ores.resId=:resid");
-		
 		List<String> displaynames = dbInstance.getCurrentEntityManager()
-				.createQuery(sb.toString(), String.class)
+				.createNamedQuery("getDisplayNameByOlatResourceRedId", String.class)
 				.setParameter("resid", resId)
+				.setHint("org.hibernate.cacheable", Boolean.TRUE)
 				.getResultList();
 
 		if (displaynames.size() > 1) throw new AssertException("Repository lookup returned zero or more than one result: " + displaynames.size());
@@ -416,12 +412,8 @@ public class RepositoryManager extends BasicManager {
 	 * @return the repositoryentry displayname or null if not found
 	 */
 	public String lookupDisplayName(Long reId) {
-		StringBuilder sb = new StringBuilder();
-		sb.append("select v.displayname from ").append(RepositoryEntry.class.getName()).append(" v ")
-		  .append(" where v.key=:reKey");
-		
 		List<String> displaynames = dbInstance.getCurrentEntityManager()
-				.createQuery(sb.toString(), String.class)
+				.createNamedQuery("getDisplayNameByRepositoryEntryKey", String.class)
 				.setParameter("reKey", reId)
 				.setHint("org.hibernate.cacheable", Boolean.TRUE)
 				.getResultList();
diff --git a/src/main/resources/infinispan-config.xml b/src/main/resources/infinispan-config.xml
index 03c5e7e7c94..4cadf5f04a8 100644
--- a/src/main/resources/infinispan-config.xml
+++ b/src/main/resources/infinispan-config.xml
@@ -1,177 +1,143 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-            xmlns="urn:infinispan:config:6.0"
-            xsi:schemaLocation="urn:infinispan:config:6.0 http://www.infinispan.org/schemas/infinispan-config-6.0.xsd">
-   <global>
-      <globalJmxStatistics allowDuplicateDomains="true" />
-   </global>
+            xmlns="urn:infinispan:config:7.2"
+            xsi:schemaLocation="urn:infinispan:config:7.2 http://www.infinispan.org/schemas/infinispan-config-7.2.xsd">
 
-   <default>
-      <!-- Used to register JMX statistics in any available MBean server -->
-      <jmxStatistics enabled="true"/>
-   </default>
-   
-	<!-- Hibernate caches --> 
-	<namedCache name="local-query">
-      <locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-      <eviction maxEntries="10000" strategy="LRU"/>
-      <expiration maxIdle="100000" wakeUpInterval="5000"/>
-      <transaction transactionMode="NON_TRANSACTIONAL" />
-   </namedCache>
-   
-	<namedCache name="timestamps">
-	  <!-- 
-      <clustering mode="replication">
-         <async/>
-      </clustering>
-      -->
-      <locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-      <!--  Don't ever evict modification timestamps -->
-      <eviction strategy="NONE"/>
-      <expiration wakeUpInterval="0"/>
-      <!-- Explicitly non transactional -->
-      <transaction transactionMode="NON_TRANSACTIONAL"/>
-      <!-- State transfer forces all replication calls to be synchronous,
-           so for calls to remain async, use a cluster cache loader instead -->
-      <persistence passivation="false">
-         <!--
-         <cluster remoteCallTimeout="20000" />
-         -->
-      </persistence>
-	</namedCache>
-   
-	<!-- Our own caches -->
-	<namedCache name="MapperService@mapper">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="1000" strategy="LRU"/>
-		<expiration maxIdle="300000" wakeUpInterval="5000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-   
-	<namedCache name="OpenMeetingsManager@session">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="1000" strategy="LRU"/>
-		<expiration maxIdle="900000" wakeUpInterval="5000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="UserSessionManager@usersession">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction strategy="NONE"/>
-		<expiration lifespan="-1" maxIdle="-1" wakeUpInterval="0"/>
-		<transaction transactionMode="TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="CalendarManager@calendar">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="500" strategy="LRU"/>
-		<expiration maxIdle="900000" wakeUpInterval="5000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="AssessmentManager@newpersisting">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="20000" strategy="LRU"/>
-		<expiration maxIdle="900000" wakeUpInterval="5000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="QTIHelper@QTI_xml_Documents">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="200" strategy="LIRS"/>
-		<expiration maxIdle="180000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="WebDAVManager@webdav">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="2013" strategy="LRU"/>
-		<expiration maxIdle="900000" wakeUpInterval="5000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="UserManager@username">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="20000" strategy="LIRS"/>
-		<expiration maxIdle="2700000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="UserManager@userfullname">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="20000" strategy="LIRS"/>
-		<expiration maxIdle="2700000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="Velocity@templates">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="7700" strategy="LRU"/>
-		<expiration lifespan="-1" maxIdle="-1" wakeUpInterval="0"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-		
-	<namedCache name="LoginModule@blockafterfailedattempts">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="10000" strategy="LRU"/>
-		<expiration maxIdle="300000" lifespan="300000" wakeUpInterval="5000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
+	<cache-container name="NonTransactionalCacheManager" default-cache="default">
+		<jmx duplicate-domains="true" />
+		<local-cache name="default" />
 
-	<namedCache name="NotificationHelper@userPropertiesCache">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="2000" strategy="LRU"/>
-		<expiration maxIdle="120000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="GlossaryItemManager@glossary">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="50" strategy="LRU"/>
-		<expiration maxIdle="1800000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="WikiManager@wiki">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="50" strategy="LRU"/>
-		<expiration maxIdle="3600000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="CollaborationToolsFactory@tools">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="5000" strategy="LRU"/>
-		<expiration maxIdle="1800000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="CourseFactory@courses">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="500" strategy="LRU"/>
-		<expiration maxIdle="3600000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="ProjectBrokerManager@pb">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="50" strategy="LRU"/>
-		<expiration maxIdle="3600000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="FeedManager@feed">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="1000" strategy="LRU"/>
-		<expiration maxIdle="900000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
-	
-	<namedCache name="Path@feed">
-		<locking isolationLevel="READ_COMMITTED" concurrencyLevel="1000" lockAcquisitionTimeout="15000" useLockStriping="false"/>
-		<eviction maxEntries="1000" strategy="LRU"/>
-		<expiration maxIdle="900000" wakeUpInterval="15000"/>
-		<transaction transactionMode="NON_TRANSACTIONAL" />
-	</namedCache>
+		<local-cache name="MapperService@mapper">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="10000" strategy="LRU" />
+			<expiration max-idle="300000" interval="5000" />
+		</local-cache>
 
+		<local-cache name="OpenMeetingsManager@session">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="10000" strategy="LRU" />
+			<expiration max-idle="300000" interval="5000" />
+		</local-cache>
+		
+		<local-cache name="UserSessionManager@usersession">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction strategy="NONE" />
+			<expiration max-idle="-1" interval="5000" />
+		</local-cache>
+		
+		<local-cache name="CalendarManager@calendar">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="500" strategy="LRU" />
+			<expiration max-idle="900000" interval="5000" />
+		</local-cache>
+		
+		<local-cache name="AssessmentManager@newpersisting">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="20000" strategy="LRU" />
+			<expiration max-idle="900000" interval="5000" />
+		</local-cache>
+		
+		<local-cache name="QTIHelper@QTI_xml_Documents">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="200" strategy="LRU" />
+			<expiration max-idle="180000" interval="15000" />
+		</local-cache>
+		
+		<local-cache name="WebDAVManager@webdav">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="2013" strategy="LRU" />
+			<expiration max-idle="900000" interval="5000" />
+		</local-cache>
+		
+		<local-cache name="UserManager@username">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="20000" strategy="LIRS" />
+			<expiration max-idle="2700000" interval="15000" />
+		</local-cache>
+		
+		<local-cache name="UserManager@userfullname">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="20000" strategy="LIRS" />
+			<expiration max-idle="2700000" interval="15000" />
+		</local-cache>
+		
+		<local-cache name="Velocity@templates">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="7700" strategy="LRU" />
+			<expiration max-idle="-1" lifespan="-1" interval="-1" />
+		</local-cache>
+		
+		<local-cache name="LoginModule@blockafterfailedattempts">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="10000" strategy="LRU" />
+			<expiration max-idle="300000" lifespan="300000" interval="5000" />
+		</local-cache>
+		
+		<local-cache name="NotificationHelper@userPropertiesCache">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="2000" strategy="LRU" />
+			<expiration max-idle="120000" interval="15000" />
+		</local-cache>
+		
+		<local-cache name="GlossaryItemManager@glossary">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="500" strategy="LRU" />
+			<expiration max-idle="3600000" interval="15000" />
+		</local-cache>
+		
+		<local-cache name="WikiManager@wiki">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="500" strategy="LRU" />
+			<expiration max-idle="3600000" interval="15000" />
+		</local-cache>
+		
+		<local-cache name="CollaborationToolsFactory@tools">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="5000" strategy="LRU" />
+			<expiration max-idle="1800000" interval="15000" />
+		</local-cache>
+		
+		<local-cache name="CourseFactory@courses">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="1000" strategy="LRU" />
+			<expiration max-idle="3600000" interval="15000" />
+		</local-cache>
+		
+		<local-cache name="ProjectBrokerManager@pb" >
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="100" strategy="LRU" />
+			<expiration max-idle="3600000" interval="15000" />
+		</local-cache>
+		
+		<local-cache name="FeedManager@feed">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="1000" strategy="LRU" />
+			<expiration max-idle="900000" interval="15000" />
+		</local-cache>
+		
+		<local-cache name="Path@feed">
+			<locking isolation="READ_COMMITTED" concurrency-level="1000" acquire-timeout="15000" striping="false" />
+			<transaction mode="NONE" auto-commit="true" />
+			<eviction max-entries="1000" strategy="LRU" />
+			<expiration max-idle="900000" interval="15000" />
+		</local-cache>
+	</cache-container>
 </infinispan>
\ No newline at end of file
-- 
GitLab