/** * Open channels for each listen address and register them against this ConnectionHandler's {@link * Selector}. * * @return the number of successfully registered channel */ private int registerChannels() { int numRegistered = 0; for (InetAddress a : listenAddresses) { try { ServerSocketChannel channel = ServerSocketChannel.open(); channel.socket().setReuseAddress(allowReuseAddress); channel.socket().bind(new InetSocketAddress(a, listenPort), backlog); channel.configureBlocking(false); channel.register(selector, SelectionKey.OP_ACCEPT); numRegistered++; logger.info(NOTE_CONNHANDLER_STARTED_LISTENING, handlerName); } catch (Exception e) { logger.traceException(e); logger.error( ERR_LDAP_CONNHANDLER_CREATE_CHANNEL_FAILED, currentConfig.dn(), a.getHostAddress(), listenPort, stackTraceToSingleLineString(e)); } } return numRegistered; }