OpenDJ SDK ========== The **OpenDJ LDAP SDK** provides a set of modern, developer-friendly Java APIs as part of the [OpenDJ](http://opendj.forgerock.org) product suite, which is actively maintained and supported by [ForgeRock](http://www.forgerock.com). The product suite includes the client SDK alongside command-line tools and sample code, a 100% pure Java directory server, and more. You can use **OpenDJ SDK** to create client applications for use with any server that complies with the [RFC 4510: LDAP - Technical Specification Road Map](http://tools.ietf.org/html/rfc4510). The **OpenDJ LDAP SDK** brings you easy-to-use connection management, connection pooling, load balancing, and all the standard LDAP operations to read and write directory entries. **OpenDJ LDAP SDK** also lets you build applications with capabilities defined in additional draft and experimental RFCs that are supported by modern LDAP servers. Documentation ============= Javadoc for this module can be found [here](http://opendj.forgerock.org/opendj-core/apidocs/index.html). Read the [developer guide](http://opendj.forgerock.org/doc/dev-guide/index.html) for a deeper understanding of LDAP application development, as well as a detailed overview of LDAP itself. Get the OpenDJ LDAP SDK ======================= You can start developing your LDAP applications now by obtaining the **OpenDJ LDAP SDK** using any of the following methods: Maven ----- By far the simplest method is to develop your application using Maven and add the following settings to your pom.xml: ```xml forgerock-staging-repository ForgeRock Release Repository http://maven.forgerock.org/repo/releases false forgerock-snapshots-repository ForgeRock Snapshot Repository http://maven.forgerock.org/repo/snapshots false ``` The following dependencies will load both the [OpenDJ Core APIs](opendj-core) and the [OpenDJ Grizzly](opendj-grizzly) network transport. Remember to override the version according to your needs: ```xml org.forgerock.opendj opendj-core 3.0.0 org.forgerock.opendj opendj-grizzly 3.0.0 ``` In some use-cases, such as developing LDAP unit tests or embedded LDAP applications, the network transport is not required, in which case you can simply declare a dependency on the OpenDJ core APIs: ```xml org.forgerock.opendj opendj-core 3.0.0 ``` Build it yourself ----------------- You need `git` and `maven` in order to get the source code and build it: ```bash git clone ssh://git@stash.forgerock.org:7999/opendj/opendj-sdk.git cd opendj-sdk mvn clean install ``` Getting started =============== The following example shows how the **OpenDJ LDAP SDK** may be used to connect to a Directory Server, authenticate, and then perform a search. The search results are output as LDIF to the standard output: ```java // Create an LDIF writer which will write the search results to stdout. final LDIFEntryWriter writer = new LDIFEntryWriter(System.out); // Connect and bind to the server. final LDAPConnectionFactory factory = new LDAPConnectionFactory(hostName, port); final Connection connection = factory.getConnection(); connection.bind(userName, password.toCharArray()); // Read the entries and output them as LDIF. final ConnectionEntryReader reader = connection.search(baseDN, scope, filter, attributes); while (reader.hasNext()) { if (!reader.isReference()) { final SearchResultEntry entry = reader.readEntry(); writer.writeComment("Search result entry: " + entry.getName()); writer.writeEntry(entry); } else { final SearchResultReference ref = reader.readReference(); writer.writeComment("Search result reference: " + ref.getURIs()); } } writer.flush(); connection.close(); ``` License ======= **OpenDJ LDAP SDK** is licensed under [CDDL 1.0](legal-notices/CDDLv1_0.txt) (COMMON DEVELOPMENT AND DISTRIBUTION LICENSE Version 1.0)