Embedding Apache Directory Server into Applications By Alex Karasulu IInnttrroodduuccttiioonn:: CCoovveerraaggee (cid:1) Core: Server Architecture (cid:1) Core Configuration Interfaces (cid:1) Schema Customizations (cid:1) Startup/Shutdown Sequence (cid:1) Enabling Protocol Services (cid:1) Testing (cid:1) Advanced Configuration – Hot Reconfiguration – Introducing New Interceptors (Aspects) EExxppeerriieennccee aanndd EExxppeeccttaattiioonnss What is your background experience and expectations from this session? (cid:1) LDAP Knowledge (cid:1) JNDI API Familiarity (cid:1) What directory servers have you used before? (cid:1) Have you tried ApacheDS? SSeerrvveerr CCoorree AArrcchhiitteeccttuurree (cid:1) What is the core? (cid:1) ApacheDS LDAP JNDI Provider (cid:1) Interceptor Mechanism (cid:1) Interceptors (cid:1) Partition Nexus (cid:1) Partitions CCoorree:: WWhhaatt iiss iitt?? The ApacheDS core is a JNDI provider that manages a local hierarchical store of Attributes objects, based on the LDAP namespace. CCoorree:: WWhhaatt’’ss iinn tthheerree?? (cid:1) Nexus Singleton (cid:1) Partitions (cid:1) Nexus Proxies (cid:1) Interceptors (cid:1) InvocationStack (cid:1) JNDI Interfaces CCoorree:: PPaarrttiittiioonnss (cid:1) Partitions store entries (javax.naming.directory.Attributes). (cid:1) Exposes CRUD operations mapping to LDAP operations. (cid:1) Multiple heterogeneous partitions may exist. (cid:1) Partitions store disconnected entry trees. (cid:1) Partitions store entries below some naming context called the partition suffix. The names of all entries within a partition end in the suffix. (cid:1) Partitions are kept as simple as possible: they only need to be concerned with entry access and storage. CCoorree:: PPaarrttiittiioonn NNeexxuuss (cid:1) Presently the nexus is a singleton. (cid:1) It is a partition that does not store entries. (cid:1) Calls are delegated to other partitions. (cid:1) Call routing is based on namespace. (cid:1) Several partitions may be “attached”. (cid:1) Custom implementations can be attached. (cid:1) Stores immutable RootDSE in memory. (cid:1) Has ops to add/remove/list partitions. CCoorree:: SSyysstteemm PPaarrttiittiioonn (cid:1) Always present with suffix ou=system. (cid:1) Provides storage for configuration info. (cid:1) Implementation based on JDBM B+Trees. (cid:1) Cannot be detached from the nexus. CCoorree:: JJNNDDII PPrroovviiddeerr (cid:1) JNDI is the access API used to hide internals. (cid:1) Nexus, partitions etc. are all hidden. (cid:1) JNDI Contexts call internals to perform operations on Attributes objects in partitions. (cid:1) Feels like LDAP but it’s not: just the namespace. (cid:1) Relative Name arguments to Contexts are transformed into absolute distinguished names. (cid:1) Contexts perform absolute operations on internals to satisfy JNDI calls.
Description: