http://git-wip-us.apache.org/repos/asf/airavata/blob/89e0fdc8/modules/group-manager/src/main/resources/ehcache.xml
----------------------------------------------------------------------
diff --git a/modules/group-manager/src/main/resources/ehcache.xml 
b/modules/group-manager/src/main/resources/ehcache.xml
new file mode 100755
index 0000000..9b6dcc1
--- /dev/null
+++ b/modules/group-manager/src/main/resources/ehcache.xml
@@ -0,0 +1,1517 @@
+<!--
+
+    Copyright 2014 Internet2
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<ehcache updateCheck="false">
+
+  <!-- Sets the path to the directory where cache .data files are created. -->
+  <diskStore path="java.io.tmpdir"/>
+
+
+  <!--
+    Default Cache configuration. These will applied to caches
+    programmatically created through the CacheManager.
+
+    The following attributes are required for defaultCache:
+
+    maxInMemory       - Sets the maximum number of objects that
+                        will be created in memory
+    eternal           - Sets whether elements are eternal. If
+                        eternal,  timeouts are ignored and the
+                        element is never expired.
+    timeToIdleSeconds - Sets the time to idle for an element
+                        before it expires. Is only used if the
+                        element is not eternal.  Idle time is now -
+                        last accessed time
+    timeToLiveSeconds - Sets the time to live for an element
+                        before it expires. Is only used if the
+                        element is not eternal.  TTL is now -
+                        creation time
+    overflowToDisk    - Sets whether elements can overflow to
+                        disk when the in-memory cache has reached
+                        the maxInMemory limit.
+  -->
+  <defaultCache
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupDAO"
+          maxElementsInMemory="500"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+  />
+
+  <!--
+    Predefined caches.  Add your cache configuration settings here.
+    If you do not have a configuration for your cache a WARNING
+    will be issued when the CacheManager starts
+  -->
+
+<!--
+  Grouper Caches
+-->
+
+  <!-- class: HibernateMemberDAO -->
+<!--
+  <cache  name="edu.internet2.middleware.grouper.HibernateMemberDAO.FindByUuid"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"  
+  />
+-->
+
+  <!-- class: HibernateMemberDAO -->
+
+  <!-- class: Hib3MemberDAO -->
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3MemberDAO.FindBySubject"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"  
+          statistics="false"
+  />
+
+  <!-- class: Hib3MemberDAO -->
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3MembershipDAO"
+          maxElementsInMemory="10000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+          statistics="false"  
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeAssignActionDAO.FindByAttributeDefId"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeAssignDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- Queries -->
+
+<!--
+  Hibernate Query Caches
+-->
+
+  <cache name="org.hibernate.cache.internal.StandardQueryCache"
+    maxElementsInMemory="500"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache name="org.hibernate.cache.spi.UpdateTimestampsCache"
+    maxElementsInMemory="5000"
+    eternal="true"
+    overflowToDisk="true"
+    statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.RegistrySubject"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.GroupTypeTuple"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.Field"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.RegistrySubjectAttribute"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.AuditType"
+          maxElementsInMemory="500"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.Attribute"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.Composite"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.GroupType"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.Membership"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.Group"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.Stem"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.Member"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1"
+          timeToLiveSeconds="1"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- @see   StemDAO#findByName(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3StemDAO.FindByName"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <!-- @see   StemDAO#findByUuid(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3StemDAO.FindByUuid"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- @see   GroupDAO#findByName(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupDAO.FindByName"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <!-- @see   GroupDAO#findByIdIndex(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupDAO.FindByIdIndex"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  
+  <!-- @see   GroupDAO#findByIdIndex(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupDAO.FindByIdIndexSecure"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  
+  <!-- @see   GroupDAO#findByUuid(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupDAO.FindByUuid"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeDefDAO.FindByUuidsSecure"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeDefNameDAO.FindByUuidsSecure"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeDefNameDAO.FindByName"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeDefNameDAO.FindByNameCache"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="60"
+          timeToLiveSeconds="60"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.audit.AuditType"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="edu.internet2.middleware.grouper.changeLog.ChangeLogType"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="ImmediateMembershipEntry"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="edu.internet2.middleware.grouper.permissions.role.RoleSet"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="edu.internet2.middleware.grouper.attr.AttributeDefNameSet"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  
name="edu.internet2.middleware.grouper.attr.assign.AttributeAssignActionSetView"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="edu.internet2.middleware.grouper.attr.AttributeDef"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="MembershipEntry"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="edu.internet2.middleware.grouper.attr.assign.AttributeAssign"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="edu.internet2.middleware.grouper.attr.AttributeDefName"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  
name="edu.internet2.middleware.grouper.attr.finder.AttributeDefNameFinder.findByNameCache"
+          maxElementsInMemory="2000"
+          eternal="false"
+          timeToIdleSeconds="60"
+          timeToLiveSeconds="60"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="edu.internet2.middleware.grouper.attr.AttributeDefScope"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="edu.internet2.middleware.grouper.attr.AttributeDefNameSetView"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="edu.internet2.middleware.grouper.permissions.role.RoleSetView"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  
name="edu.internet2.middleware.grouper.attr.assign.AttributeAssignActionSet"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  name="edu.internet2.middleware.grouper.changeLog.ChangeLogConsumer"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  
name="edu.internet2.middleware.grouper.attr.assign.AttributeAssignValue"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  
name="edu.internet2.middleware.grouper.attr.assign.AttributeAssignAction"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+    />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeDefScopeDAO.FindByUuidOrName"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="20"
+          timeToLiveSeconds="20"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeDefNameDAO.FindByUuidOrName"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeAssignValueDAO.FindByAttributeAssignId"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib.Hib3AttributeAssignDAO.FindByAttributeTypeDefNameId"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib.Hib3AttributeDefDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib.Hib3AttributeDefDAO.FindByIdIndex"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="10"
+          timeToLiveSeconds="10"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3ChangeLogEntryDAO.FindBySequenceNumber"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3FieldDAO.FindAll"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeDefDAO.FindByName"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeDefDAO.FindByAttributeDefNameIdSecure"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITField"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITFieldDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITAttributeAssign"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITAttributeAssignAction"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.pit.PITAttributeAssignActionSet"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITAttributeAssignValue"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.pit.PITAttributeAssignValueView"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITAttributeDef"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITAttributeDefName"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITAttributeDefNameSet"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITGroup"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITGroupSet"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITMember"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITMembership"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITMembershipView"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITPermissionAllView"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITRoleSet"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.pit.PITStem"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeAssignActionDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeAssignActionSetDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeAssignDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeAssignValueDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeDefDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeDefNameDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeDefNameSetDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITGroupDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITGroupSetDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITMemberDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITMembershipDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITRoleSetDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITStemDAO.FindById"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeAssignActionDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeAssignActionSetDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeAssignDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeAssignValueDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeDefDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeDefNameDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITAttributeDefNameSetDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITGroupDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITGroupSetDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITMemberDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITMembershipDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITRoleSetDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITStemDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3PITFieldDAO.FindBySourceIdActive"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+
+
+  <cache  name="edu.internet2.middleware.grouper.group.GroupSet"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+
+  <cache  
name="edu.internet2.middleware.grouper.externalSubjects.ExternalSubject"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+
+  <cache  
name="edu.internet2.middleware.grouper.externalSubjects.ExternalSubjectAttribute"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+
+  <cache  
name="edu.internet2.middleware.grouper.attr.value.AttributeAssignValue"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupDAO.FindByUuidsSecure"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupDAO.FindByNamesSecure"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeDefDAO.FindById"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3StemDAO.FindByCurrentName"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3StemDAO.FindByIdIndex"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3StemDAO.FindByAlternateName"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupTypeTupleDAO.FindByUuidOrKey"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3CompositeDAO.FindByUuidOrName"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupSetDAO.FindSelfStem"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupSetDAO.FindSelfGroup"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3FieldDAO.FindByUuidOrName"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeAssignActionDAO.FindByUuidOrName"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeDefNameDAO.FindAll"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AttributeAssignDAO.FindByUuidOrKey"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3GroupSetDAO.FindByOwnerMemberFieldParentAndType"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AuditTypeDAO.FindByCategory"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AuditTypeDAO.FindByUuidOrName"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="10"
+    timeToLiveSeconds="10"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3AuditEntryDAO.FindByActingUser"
+    maxElementsInMemory="1000"
+    eternal="false"
+    timeToIdleSeconds="120"
+    timeToLiveSeconds="120"
+    overflowToDisk="false"
+    statistics="false"
+  />
+
+  <!-- @see   CachingAccessResolver#hasPrivilege(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.privs.CachingAccessResolver.HasPrivilege"
+          maxElementsInMemory="500"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+
+
+  <!-- Naming privilege resolving caching -->
+
+  <!-- @see   CachingNamingResolver#hasPrivilege(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.privs.CachingNamingResolver.HasPrivilege"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!--  attribute def resolving caching -->
+
+  <cache  
name="edu.internet2.middleware.grouper.privs.CachingAttrDefResolver.HasPrivilege"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+  />
+
+
+  <!-- Subject resolving caching -->
+
+  <!-- @see   CachingResolver#find(...) -->
+  <cache  name="edu.internet2.middleware.grouper.subj.CachingResolver.Find"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- @see   CachingResolver#findAll(...) -->
+  <cache  name="edu.internet2.middleware.grouper.subj.CachingResolver.FindAll"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- @see   CachingResolver#findPage(...) -->
+  <cache  name="edu.internet2.middleware.grouper.subj.CachingResolver.FindPage"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- @see   CachingResolver#findByIdentifier(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.subj.CachingResolver.FindByIdentifier"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- @see   CachingResolver#findByIdOrIdentifier(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.subj.CachingResolver.FindByIdOrIdentifier"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <cache  
name="edu.internet2.middleware.grouper.attr.AttributeDefName.CanAdminAttributeDef"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="5"
+          timeToLiveSeconds="5"
+          overflowToDisk="false"
+  />
+  
+    <!-- @see   WheelCache#isWheelMember(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.privs.WheelCache.isWheelMember"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+    <!-- @see   Membership#getGroup(...) -->
+  <cache  name="edu.internet2.middleware.grouper.Membership.getGroup"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <!-- @see   Membership#getStem(...) -->
+  <cache  name="edu.internet2.middleware.grouper.Membership.getStem"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- @see   Membership#getAttributeDef(...) -->
+  <cache  name="edu.internet2.middleware.grouper.Membership.getAttributeDef"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- @see   Hib3MemberDAO#exists(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3MemberDAO.exists"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <!-- @see   Hib3MemberDAO#findBySubject/Uuid(...) -->
+  <cache  
name="edu.internet2.middleware.grouper.internal.dao.hib3.Hib3MemberDAO.find"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  <cache  name="AttributeAssignBaseDelegate.allAttributeAssignsCache"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="1200"
+          timeToLiveSeconds="1200"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  <cache  
name="edu.internet2.middleware.grouper.entity.EntitySubject.EntityAttributeIdCache"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <!-- this is the cache of groups used by user data.  will be a small cache, 
but can last a long time (10 minutes) -->
+  <cache  
name="edu.internet2.middleware.grouper.userData.GrouperUserDataUtils.userDataGroupCache"
+          maxElementsInMemory="100"
+          eternal="false"
+          timeToIdleSeconds="600"
+          timeToLiveSeconds="600"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <!-- this is the cache of memberships used by user data.  will last a long 
time (10 minutes) -->
+  <cache  
name="edu.internet2.middleware.grouper.userData.GrouperUserDataUtils.userDataMembershipCache"
+          maxElementsInMemory="100"
+          eternal="false"
+          timeToIdleSeconds="600"
+          timeToLiveSeconds="600"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <!-- this is the cache of attribute values used by user data.  will last not 
a long time (2 minutes) -->
+  <cache  
name="edu.internet2.middleware.grouper.userData.GrouperUserDataUtils.userDataAttributeValueCache"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="120"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+  
+  <!-- this is the cache of results for user data.  will last not a long time 
(2 minutes) -->
+  <cache  
name="edu.internet2.middleware.grouper.userData.GrouperUserDataUtils.userDataResultCache"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="120"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- cache of attribute def names for legacy attributes.  note, this must be 
short for tests to work, in prod can be longer -->
+  <cache  
name="edu.internet2.middleware.grouper.GroupType.attributeDefNameFromTypeIdCache"
+          maxElementsInMemory="200"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- cache of set of attribute def names for legacy attributes.  note, this 
must be short for tests to work, in prod can be longer -->
+  <cache  
name="edu.internet2.middleware.grouper.GroupType.legacyAttributesFromTypeIdCache"
+          maxElementsInMemory="200"
+          eternal="false"
+          timeToIdleSeconds="30"
+          timeToLiveSeconds="30"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- cache of recently created stem names to prevent race conditions of 
multiple threads creating the same stem -->
+  <cache  name="edu.internet2.middleware.grouper.Stem.stemCreatedCache"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="120"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.Stem.stemLocksCache"
+          maxElementsInMemory="1000"
+          eternal="false"
+          timeToIdleSeconds="120"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <!-- cache of recently created member objects to prevent race conditions of 
multiple threads creating the same member -->
+  <cache  
name="edu.internet2.middleware.grouper.MemberFinder.memberCreatedCache"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="120"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  name="edu.internet2.middleware.grouper.MemberFinder.memberLocksCache"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="120"
+          timeToLiveSeconds="120"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.util.GrouperUtil.objectHasAttributeCache"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="60"
+          timeToLiveSeconds="60"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.messaging.GrouperBuiltinMessagingSystem.messageCache"
+          maxElementsInMemory="100"
+          eternal="false"
+          timeToIdleSeconds="60"
+          timeToLiveSeconds="60"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+  <cache  
name="edu.internet2.middleware.grouper.hooks.examples.MembershipOneInFolderMaxHook.membershipOneAttribute"
+          maxElementsInMemory="5000"
+          eternal="false"
+          timeToIdleSeconds="60"
+          timeToLiveSeconds="60"
+          overflowToDisk="false"
+          statistics="false"
+  />
+
+</ehcache>

http://git-wip-us.apache.org/repos/asf/airavata/blob/89e0fdc8/modules/group-manager/src/main/resources/grouper-loader.base.properties
----------------------------------------------------------------------
diff --git 
a/modules/group-manager/src/main/resources/grouper-loader.base.properties 
b/modules/group-manager/src/main/resources/grouper-loader.base.properties
new file mode 100755
index 0000000..6379f03
--- /dev/null
+++ b/modules/group-manager/src/main/resources/grouper-loader.base.properties
@@ -0,0 +1,351 @@
+#
+# Copyright 2014 Internet2
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Grouper loader uses Grouper Configuration Overlays (documented on wiki)
+# By default the configuration is read from grouper-loader.base.properties
+# (which should not be edited), and the grouper-loader.properties overlays
+# the base settings.  See the grouper-loader.base.properties for the possible
+# settings that can be applied to the grouper.properties
+
+
+########################################
+## Config chaining hierarchy
+########################################
+
+# comma separated config files that override each other (files on the right 
override the left)
+# each should start with file: or classpath:
+# e.g. classpath:grouper-loader.example.properties, 
file:c:/something/myconfig.properties
+loader.config.hierarchy = classpath:grouper-loader.base.properties, 
classpath:grouper-loader.properties
+
+# seconds between checking to see if the config files are updated
+loader.config.secondsBetweenUpdateChecks = 60
+
+
+########################################
+## General settings
+########################################
+
+
+# auto-add grouper loader types and attributes when grouper starts up if they 
are not there
+loader.autoadd.typesAttributes = true
+
+# if a transaction should be used when loading groups.  If not, then
+# commits will happen as the group is loaded (and memory usage might be
+# less intensive, and caching settings need to be set right)
+loader.use.transactions = false
+
+# number of threads in the loader threadpool.  Only this number of jobs can 
run at once
+# jobs which are on deck will block, or will fail if the blocking timeout 
occurs
+# a job is running if it is loading (not just scheduled)
+loader.thread.pool.size=10
+
+# if should use threads in the loader for add/remove member
+loader.use.membershipThreads=true
+
+# number of threads to use for each group job (not shared among jobs)
+loader.membershipThreadPoolSize=10
+
+# if should use threads in the loader for each group in a group of groups
+loader.use.groupThreads=true
+
+# number of threads to use for each list of groups job (not shared among jobs)
+loader.groupThreadPoolSize=20
+
+# number of days to retain db logs in table grouperloader_log.  -1 is forever. 
 default is 7
+loader.retain.db.logs.days=7
+
+# number of days to retain db rows in grouper_change_log_entry.  -1 is 
forever.  default is 14
+loader.retain.db.change_log_entry.days=14
+
+# if you want queries which do not specify subject source to come from a 
certain
+# source, specify here (improves performance so it doesnt search through all 
sources)
+default.subject.source.id = 
+
+#if using a sql table, and specifying the name like string, then should the 
group (in addition to memberships)
+# be removed if not used anywhere else?
+loader.sqlTable.likeString.removeGroupIfNotUsed = true
+
+# if using a sql table, and specifying the name like string, then should the 
group be removed even when the group is member of some other group. 
+# loader.sqlTable.likeString.removeGroupIfNotUsed has to be true for this to 
work
+# https://bugs.internet2.edu/jira/browse/GRP-1132
+loader.sqlTable.likeString.removeGroupIfMemberOfAnotherGroup = false
+
+# by default the top folder for an ldap group of groups is the folder where 
the config group lives.
+# set to false if you want to be able to provision groups to anywhere
+loader.ldap.requireTopStemAsStemFromConfigGroup = true
+
+# if you dont specify a groupNameExpression, groups will be loaded into this 
folder
+# if this property doesnt exist, it will be groups:    if it is blank, then 
there is no top level folder
+# e.g. loader:groups
+loader.ldap.defaultGroupFolder = groups:
+
+# if the loader should check to see too many users were removed, if so, then 
error out and
+# wait for manual intervention
+loader.failsafe.use = false
+
+# if a group has a size less than this (default 200), then make changes 
including blanking it out 
+loader.failsafe.minGroupSize = 200
+
+# if a group with more members than the loader.failsafe.minGroupSize have more 
than this percent (default 30)  
+# removed, then log it as error, fail the job, and don't actually remove the 
members 
+# In order to run the job, an admin would need to change this param in the 
config, 
+# and run the job manually, then change this config back 
+loader.failsafe.maxPercentRemove = 30
+
+# Comma separated list of stems under which the display name changes in stems 
are allowed.
+# eg: loader.allowStemDisplayNameChangesUnderStems=school:courses:english, 
school:faculty
+loader.allowStemDisplayNameChangesUnderStems =
+
+#################################
+## Performance enhancements
+#################################
+
+# if you want to bulk retrieve subjects to add/remove
+loader.bulkLookupSubjects = true
+
+#################################
+## DB connections
+#################################
+# specify the db connection with user, pass, url, and driver class
+# the string after "db." is the name of the connection, and it should not have
+# spaces or other special chars in it
+#db.warehouse.user = mylogin
+#note the password can be stored encrypted in an external file
+#db.warehouse.pass = secret
+#db.warehouse.url = jdbc:mysql://localhost:3306/grouper
+
+## note: you probably dont have to enter a driver, it will detect from URL.  
If it
+## cant detect, then specify it here
+#db.warehouse.driver = 
+
+#################################
+## LDAP connections
+#################################
+# specify the ldap connection with user, pass, url
+# the string after "ldap." is the ID of the connection, and it should not have
+# spaces or other special chars in it.  In this case is it "personLdap"
+
+#note the URL should start with ldap: or ldaps: if it is SSL.  
+#It should contain the server and port (optional if not default), and baseDn, 
+#e.g. ldaps://ldapserver.school.edu:636/dc=school,dc=edu
+#ldap.personLdap.url = ldaps://ldapserver.school.edu:636/dc=school,dc=edu
+
+# load this vt-ldap config file before the configs here.  load from classpath
+#ldap.personLdap.configFileFromClasspath = ldap.personLdap.properties
+
+#optional, if authenticated
+#ldap.personLdap.user = uid=someapp,ou=people,dc=myschool,dc=edu
+
+#optional, if authenticated, note the password can be stored encrypted in an 
external file
+#ldap.personLdap.pass = secret
+
+#optional, if you are using tls, set this to true.  Generally you will not be 
using an SSL URL to use TLS...
+#ldap.personLdap.tls = false
+
+#optional, if using sasl
+#ldap.personLdap.saslAuthorizationId = 
+#ldap.personLdap.saslRealm = 
+
+#optional (note, time limit is for search operations, timeout is for 
connection timeouts), 
+#most of these default to vt-ldap defaults.  times are in millis
+#validateOnCheckout defaults to true if all other validate methods are false
+#ldap.personLdap.batchSize = 
+#ldap.personLdap.countLimit = 
+#ldap.personLdap.timeLimit = 
+#ldap.personLdap.timeout = 
+#ldap.personLdap.minPoolSize = 
+#ldap.personLdap.maxPoolSize = 
+#ldap.personLdap.validateOnCheckIn = 
+#ldap.personLdap.validateOnCheckOut = 
+#ldap.personLdap.validatePeriodically = 
+#ldap.personLdap.validateTimerPeriod = 
+#ldap.personLdap.pruneTimerPeriod = 
+# if there is a max size limit on ldap server, then this will retrieve results 
in pages
+#ldap.personLdap.pagedResultsSize = 
+# set to 'follow' if using AD and using paged results size and need this for 
some reason (generally you shouldnt)
+#ldap.personLdap.referral = 
+
+
+##################################
+## LDAP loader settings
+##################################
+
+# el classes to add to the el context for the EL to calculate subejct ids or 
group names etc.  
+# Comma-separated fully qualified classnamesm will be registered by the 
non-fully qualified
+# uncapitalized classname.  So you register a.b.SomeClass, it will be 
available by variable: someClass
+loader.ldap.el.classes = 
+
+
+##################################
+## Daily report
+##################################
+#quartz cron-like schedule for daily grouper report, the default is 7am every 
day: 0 0 7 * * ? 
+#leave blank to disable this
+daily.report.quartz.cron = 
+
+#comma separated email addresses to email the daily report, e.g. [email protected], [email protected]
+daily.report.emailTo = 
+
+#days on which usdu should run with daily report (comma separated)
+#blank means run never.   e.g. to run on all days: monday, tuesday, wednesday, 
thursday, friday, saturday, sunday
+daily.report.usdu.daysToRun = monday, tuesday, wednesday, thursday, friday, 
saturday, sunday
+
+#days on which bad membership finder should run with daily report (comma 
separated)
+#blank means run never.   e.g. to run on all days: monday, tuesday, wednesday, 
thursday, friday, saturday, sunday
+daily.report.badMembership.daysToRun = monday, tuesday, wednesday, thursday, 
friday, saturday, sunday
+
+#if you put a directory here, the daily reports will be saved there, and you 
can
+#link up to a web service or store them or whatever.  e.g. 
/home/grouper/reports/
+daily.report.saveInDirectory =
+
+##################################
+## enabled / disabled cron
+##################################
+
+#quartz cron-like schedule for enabled/disabled daemon.  Note, this has 
nothing to do with the changelog
+#leave blank to disable this, the default is 12:01am, 11:01am, 3:01pm every 
day: 0 1 0,11,15 * * ? 
+changeLog.enabledDisabled.quartz.cron = 0 1 0,11,15 * * ?
+
+##################################
+## Change log
+##################################
+
+# should the change log temp to change log daemon run?  Note, this should be 
true
+changeLog.changeLogTempToChangeLog.enable = true
+
+#quartz cron-like schedule for change log temp to change log daemon, the 
default is 50 seconds after every minute: 50 * * * * ?
+changeLog.changeLogTempToChangeLog.quartz.cron = 
+
+# Should the change log include flattened memberships?  
+changeLog.includeFlattenedMemberships = true
+
+# Should the change log include flattened privileges?  
+changeLog.includeFlattenedPrivileges = true
+
+# Should the change log include roles that have had permission changes?  
+changeLog.includeRolesWithPermissionChanges = false
+
+# Should the change log include non-flattened (immediate and composite only) 
memberships?
+changeLog.includeNonFlattenedMemberships = false
+
+# Should the change log include non-flattened (immediate only) privileges?
+changeLog.includeNonFlattenedPrivileges = false
+
+
+#specify the consumers here.  specify the consumer name after the 
changeLog.consumer. part.  This example is "psp"
+#but it could be changeLog.consumer.myConsumerName.class
+#the class must extend 
edu.internet2.middleware.grouper.changeLog.ChangeLogConsumerBase
+# changeLog.consumer.psp.class = 
edu.internet2.middleware.psp.grouper.PspChangeLogConsumer
+
+#the quartz cron is a cron-like string.  it defaults to every minute on the 
minute (since the temp to change log job runs
+#at 10 seconds to each minute).  it defaults to this: 0 * * * * ?
+#though it will stagger each one by 2 seconds
+# 
http://www.quartz-scheduler.org/documentation/quartz-1.x/tutorials/crontrigger
+# changeLog.consumer.psp.quartzCron = 0 * * * * ?
+
+# To retry processing a change log entry if an error occurs, set retryOnError 
to true. Defaults to false.
+# changeLog.consumer.psp.retryOnError = false
+
+# To run full provisioning synchronizations periodically, provide the class 
name which provides a 'public void fullSync()' method.
+# changeLog.psp.fullSync.class = 
edu.internet2.middleware.psp.grouper.PspChangeLogConsumer
+
+# Schedule full synchronizations. Defaults to 5 am : 0 0 5 * * ?.
+# changeLog.psp.fullSync.quartzCron = 0 0 5 * * ?
+
+# Run a full synchronization job at startup. Defaults to false.
+# changeLog.psp.fullSync.runAtStartup = false
+
+# Omit diff responses from bulk response to conserve memory.
+# changeLog.psp.fullSync.omitDiffResponses = true
+
+# Omit sync responses from bulk response to conserve memory.
+# changeLog.psp.fullSync.omitSyncResponses = true
+
+
+#changeLog.consumer.printTest.class = 
edu.internet2.middleware.grouper.changeLog.consumer.PrintTest
+#changeLog.consumer.printTest.quartzCron = 
+
+#rules consumer, needed for some of the Grouper rule types to run (e.g. 
flattenedMembershipRemove, flattenedMembershipAdd)
+changeLog.consumer.grouperRules.class = 
edu.internet2.middleware.grouper.changeLog.esb.consumer.RuleConsumer
+changeLog.consumer.grouperRules.quartzCron =
+
+#consumer for syncing groups to other groupers
+changeLog.consumer.syncGroups.class = 
edu.internet2.middleware.grouper.client.GroupSyncConsumer
+changeLog.consumer.syncGroups.quartzCron =
+
+
+
+###################################
+## XMPP notifications 
+## (note, uncomment the consumer class and cron above)
+## this will get grouper ws getMembers rest lite xmp: 
+## 
http://anonsvn.internet2.edu/cgi-bin/viewvc.cgi/i2mi/trunk/grouper-ws/grouper-ws/doc/samples/getMembers/WsSampleGetMembersRestLite_xml.txt?view=log
+###################################
+
+## general xmpp configuration
+xmpp.server.host = jabber.school.edu
+xmpp.server.port = 5222
+xmpp.user = username
+# note, pass can be in an external file with morphstring
+xmpp.pass = 
+xmpp.resource = grouperServer
+
+###################################
+## Rules config
+###################################
+
+# when the rules validations and daemons run.  Leave blank to not run
+rules.quartz.cron = 0 0 7 * * ?
+
+#####################################
+## ESB integration
+#####################################
+
+#changeLog.consumer.awsJira.quartzCron = 0/15 * * * * ?
+#changeLog.consumer.awsJira.class = 
edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbConsumer
+#changeLog.consumer.awsJira.elfilter = event.eventType eq 'MEMBERSHIP_ADD' || 
event.eventType eq 'MEMBERSHIP_ADD'
+#changeLog.consumer.awsJira.noSensitiveData = true
+## if you want to encrypt messages, set this to an implementation of 
edu.internet2.middleware.grouperClient.encryption.GcEncryptionInterface
+#changeLog.consumer.awsJira.encryptionImplementation = 
edu.internet2.middleware.grouperClient.encryption.GcSymmetricEncryptAesCbcPkcs5Padding
+## this is a key or could be encrypted in a file as well like other passwords
+## generate a key with: java -cp grouperClient.jar 
edu.internet2.middleware.grouperClient.encryption.GcGenerateKey 
+#changeLog.consumer.awsJira.encryptionKey = abc123
+## if you dont want to send the first 4 of the sha hash base 64 of the secret
+#changeLog.consumer.awsJira.dontSendShaBase64secretFirst4 = abc123
+#changeLog.consumer.awsJira.publisher.class = 
edu.internet2.middleware.grouperAwsChangelog.GrouperAwsEsbPublisher
+#changeLog.consumer.awsJira.publisher.awsAccessKey = ABCXYZ
+#changeLog.consumer.awsJira.publisher.awsSecretKey = 123REWQ
+#changeLog.consumer.awsJira.publisher.awsRegion = US_EAST_1
+#changeLog.consumer.awsJira.publisher.awsSnsTopicArn = 
arn:aws:sns:us-east-1:123:name
+
+#changeLog.consumer.xmppTest.quartzCron = 
+#changeLog.consumer.xmppTest.class = 
edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbConsumer
+#changeLog.consumer.xmppTest.elfilter = event.eventType eq 'GROUP_DELETE' || 
event.eventType eq 'GROUP_ADD' || event.eventType eq 'MEMBERSHIP_DELETE' || 
event.eventType eq 'MEMBERSHIP_ADD'
+#changeLog.consumer.xmppTest.publisher.class = 
edu.internet2.middleware.grouper.changeLog.esb.consumer.EsbXmppPublisher
+#changeLog.consumer.xmppTest.publisher.server = jabber.school.edu
+#changeLog.consumer.xmppTest.publisher.port = 5222
+#changeLog.consumer.xmppTest.publisher.username = jabberuser
+#changeLog.consumer.xmppTest.publisher.password = 
/home/whatever/pass/jabberuserEncrypted.pass
+#changeLog.consumer.xmppTest.publisher.recipient = [email protected]
+#changeLog.consumer.xmppTest.publisher.addSubjectAttributes = NETID
+##note, on the content type header, activemq might need: 
application/x-www-form-urlencoded
+#changeLog.consumer.xmppTest.publisher.contentTypeHeader = application/json; 
charset=utf-8
+##note, on the stringRequestEntityPrefix, activemq might need: data=
+#changeLog.consumer.xmppTest.publisher.stringRequestEntityPrefix = 
+##note, on the stringRequestEntityContentType, activemq might need: 
application/x-www-form-urlencoded
+#changeLog.consumer.xmppTest.publisher.stringRequestEntityContentType = 
application/json
+
+

http://git-wip-us.apache.org/repos/asf/airavata/blob/89e0fdc8/modules/group-manager/src/main/resources/grouper-loader.properties
----------------------------------------------------------------------
diff --git a/modules/group-manager/src/main/resources/grouper-loader.properties 
b/modules/group-manager/src/main/resources/grouper-loader.properties
new file mode 100755
index 0000000..0f63983
--- /dev/null
+++ b/modules/group-manager/src/main/resources/grouper-loader.properties
@@ -0,0 +1,25 @@
+#
+# Copyright 2014 Internet2
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# Grouper loader uses Grouper Configuration Overlays (documented on wiki)
+# By default the configuration is read from grouper-loader.base.properties
+# (which should not be edited), and the grouper-loader.properties overlays
+# the base settings.  See the grouper-loader.base.properties for the possible
+# settings that can be applied to the grouper.properties
+
+db.warehouse.user=root
+db.warehourse.pass=
+db.warehouse.url=jdbc:mysql://localhost:3306/loader_grouper

Reply via email to