13.3. Listening For & Handling Client Connections

You create an LDAPListener to handle incoming client connections. The LDAPListener takes a connection handler that deals with the connections, in this case connections back to the directory servers handling client requests.

final LDAPListenerOptions options = new LDAPListenerOptions().setBacklog(4096);
LDAPListener listener = null;
try {
    listener = new LDAPListener(localAddress, localPort, connectionHandler,
            options);
    System.out.println("Press any key to stop the server...");
    System.in.read();
} catch (final IOException e) {
    System.out.println("Error listening on " + localAddress + ":" + localPort);
    e.printStackTrace();
} finally {
    if (listener != null) {
        listener.close();
    }
}

You get a ServerConnectionFactory to handle requests coming from clients. The ServerConnectionFactory takes a request handler that deals with the incoming client requests. The request handler implements handlers for all supported operations. The Proxy example implements a ProxyBackend to handle requests. The ProxyBackend sends the requests on to the backend directory servers and routes the results returned back to client applications.

final ProxyBackend backend = new ProxyBackend(factory, bindFactory);
final ServerConnectionFactory<LDAPClientContext, Integer> connectionHandler =
        Connections.newServerConnectionFactory(backend);

See the Proxy example code for details about the ProxyBackend implementation.