For synchronous operations your application gets a connection from
the LDAPConnectionFactory and requests operations on
the connection. When finished, your application closes the connection.
final LDAPConnectionFactory factory = new LDAPConnectionFactory(host, port);
Connection connection = null;
try {
connection = factory.getConnection();
// Perform operations on the connection, such as connection.bind(),
// connection.search(), connection.modify(), etc.
} catch (final ErrorResultException e) {
System.err.println(e.getMessage());
System.exit(e.getResult().getResultCode().intValue());
return;
} finally {
if (connection != null) {
connection.close();
}
}
For a complete example in context, see Search.java, one of the OpenDJ LDAP SDK examples.
For asynchronous operations, your application passes a result handler
to LDAPConnectionFactory.getConnectionAsync() that
implements the ResultHandler<Connection>
interface.
private static final class ConnectResultHandlerImpl
implements ResultHandler<Connection> {
@Override
public void handleErrorResult(final ErrorResultException error) {
...
}
@Override
public void handleResult(final Connection connection) {
// Connect succeeded: save connection and initiate bind.
SearchAsync.connection = connection;
final BindRequest request =
Requests.newSimpleBindRequest(userName, password.toCharArray());
connection.bindAsync(request, null, new BindResultHandlerImpl());
}
}
// Main method initiates async operations by getting a connection...
final LDAPConnectionFactory factory = new LDAPConnectionFactory(hostName, port);
factory.getConnectionAsync(new ConnectResultHandlerImpl());
...
if (connection != null) {
connection.close();
}
When the connection result handler gets a connection, your application
can pass result handlers for other operations using methods on the connection
named *Async(). For most operations, your application
implements ResultHandler. For searches, your application
implements SearchResultHandler. The result handler is
notified upon completion of the operation.
Asynchronous methods are non-blocking, returning a
FutureResult whose get() method lets
you retrieve the result. Your application must coordinate concurrency when
you use asynchronous operations.
For a complete example in context, see SearchAsync.java, one of the OpenDJ LDAP SDK examples.

