The JNDI!PrincipalStore is a read-only Store implementation for retrieving Slide users and roles from an LDAP server. It has been tested with Novell's eDirectory version 8.6.2. Other LDAP servers should work.

Store Parameters

How often, in seconds, the cache refresh thread should check for Uris in the cache that need to be refreshed. The default value is "15". See [#cacherefreshing Cache Refreshing] for more information.

cache.refresh.rate

How frequently, in seconds, Uris that are marked for refreshing should be refreshed. This value must be less than the TimeToLive and TimeToIdle (whichever is least) parameters specified for the EHCache in order for the items to never expire. The default value is "800". See [#caching Caching] and [#cacherefreshing Cache Refreshing] for more information.

cache.refresh.threshold

The maximum amount of time, in milliseconds, that retrieve* methods can take before the Uri they are retrieving is scheduled for refreshing. By tuning this parameter you can keep smaller, infrequently accessed Uris from perpetually remaining in the cache. This may improve cache performance. See [#cacherefreshing Cache Refreshing] for more information.

jndi.container

The base LDAP context you wish to search. Example: ou=Users,o=Company

jndi.attributes.rdn

The attribute used to uniquely identify the objects you're fetching. Usually uid or cn.

jndi.attributes.userprincipalname

The attribute used to provide a user/role name which is mapped into Slide instead of the path name. This attribute is optional.

Caching

This Store makes use of [http://ehcache.sourceforge.net/ EHCache]. You will need ehcache.jar in order to use this Store. When initialized the default CacheManager is used to find a Cache named "org.apache.slide.store.txjndi.JNDI!PrincipalStore". If there is no Cache found with this name then a Cache is created with these default values:

To override these values you will need to create a configuration file for EHCache with a cache named "org.apache.slide.store.txjndi.JNDI!PrincipalStore" that has the settings you wish. See the documentation at the [http://ehcache.sourceforge.net/ EHCache website] for instructions.

Cache Refreshing

Because the data delivered by this Store is managed externally to Slide the data cache must be periodically expired to pick up any changes. Because creating object Nodes can take a long time for LDAP queries that return a lot of objects, larger queries need to be preemptively refreshed before a user makes a request to an expired object.

The retrieveObject() and retrieveNodeDescriptor() methods monitor the amount of time it takes them to return for each Uri. If the method takes longer than a specified amount of time (configured with the cache.refresh.threshold parameter) the Uri is marked as needing to be refreshed. Upon initialization the Store spawns a child thread that periodically checks for Uris that need to be refreshed.