Class InMemoryListenerConfig


  • @NotMutable
    @ThreadSafety(level=COMPLETELY_THREADSAFE)
    public final class InMemoryListenerConfig
    extends java.lang.Object
    This class provides a data structure that can be used to configure a listener for use in the in-memory directory server. Each in-memory directory server instance has the ability to have multiple listeners, and those listeners may have different settings (e.g., listen on one port for unencrypted LDAP communication with optional support for StartTLS, and listen on a separate port for SSL-encrypted communication). If the server is to provide support for SSL and/or StartTLS, then the SSLUtil class can make it easy to create the necessary socket factories.
    • Constructor Summary

      Constructors 
      Constructor Description
      InMemoryListenerConfig​(java.lang.String listenerName, java.net.InetAddress listenAddress, int listenPort, javax.net.ServerSocketFactory serverSocketFactory, javax.net.SocketFactory clientSocketFactory, javax.net.ssl.SSLSocketFactory startTLSSocketFactory)
      Creates a new in-memory directory server listener configuration with the provided settings.
      InMemoryListenerConfig​(java.lang.String listenerName, java.net.InetAddress listenAddress, int listenPort, javax.net.ServerSocketFactory serverSocketFactory, javax.net.SocketFactory clientSocketFactory, javax.net.ssl.SSLSocketFactory startTLSSocketFactory, boolean requestClientCertificate, boolean requireClientCertificate)
      Creates a new in-memory directory server listener configuration with the provided settings.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static InMemoryListenerConfig createLDAPConfig​(java.lang.String listenerName)
      Creates a new listener configuration that will listen for unencrypted LDAP communication on an automatically-selected port on all available addresses.
      static InMemoryListenerConfig createLDAPConfig​(java.lang.String listenerName, int listenPort)
      Creates a new listener configuration that will listen for unencrypted LDAP communication on the specified port on all available addresses.
      static InMemoryListenerConfig createLDAPConfig​(java.lang.String listenerName, java.net.InetAddress listenAddress, int listenPort, javax.net.ssl.SSLSocketFactory startTLSSocketFactory)
      Creates a new listener configuration that will listen for unencrypted LDAP communication, and may optionally support StartTLS.
      static InMemoryListenerConfig createLDAPConfig​(java.lang.String listenerName, java.net.InetAddress listenAddress, int listenPort, javax.net.ssl.SSLSocketFactory startTLSSocketFactory, boolean requestClientCertificate, boolean requireClientCertificate)
      Creates a new listener configuration that will listen for unencrypted LDAP communication, and may optionally support StartTLS.
      static InMemoryListenerConfig createLDAPSConfig​(java.lang.String listenerName, int listenPort, javax.net.ssl.SSLServerSocketFactory serverSocketFactory)
      Creates a new listener configuration that will listen for SSL-encrypted LDAP communication on the specified port on all available addresses.
      static InMemoryListenerConfig createLDAPSConfig​(java.lang.String listenerName, java.net.InetAddress listenAddress, int listenPort, javax.net.ssl.SSLServerSocketFactory serverSocketFactory, javax.net.ssl.SSLSocketFactory clientSocketFactory)
      Creates a new listener configuration that will listen for SSL-encrypted LDAP communication on an automatically-selected port on all available addresses.
      static InMemoryListenerConfig createLDAPSConfig​(java.lang.String listenerName, java.net.InetAddress listenAddress, int listenPort, javax.net.ssl.SSLServerSocketFactory serverSocketFactory, javax.net.ssl.SSLSocketFactory clientSocketFactory, boolean requestClientCertificate, boolean requireClientCertificate)
      Creates a new listener configuration that will listen for SSL-encrypted LDAP communication on an automatically-selected port on all available addresses.
      static InMemoryListenerConfig createLDAPSConfig​(java.lang.String listenerName, javax.net.ssl.SSLServerSocketFactory serverSocketFactory)
      Creates a new listener configuration that will listen for SSL-encrypted LDAP communication on an automatically-selected port on all available addresses.
      javax.net.SocketFactory getClientSocketFactory()
      Retrieves the socket factory that should be used to create client connections to the server, if defined.
      java.net.InetAddress getListenAddress()
      Retrieves the address on which the listener should accept connections from clients, if defined.
      java.lang.String getListenerName()
      Retrieves the name for this listener configuration.
      int getListenPort()
      Retrieves the port on which the listener should accept connections from clients, if defined.
      javax.net.ServerSocketFactory getServerSocketFactory()
      Retrieves the socket factory that should be used to create sockets when accepting client connections, if defined.
      javax.net.ssl.SSLSocketFactory getStartTLSSocketFactory()
      Retrieves the socket factory that should be used to add StartTLS encryption to existing connections, if defined.
      boolean requestClientCertificate()
      Indicates whether the listener should request that the client present its own certificate chain during TLS negotiation.
      boolean requireClientCertificate()
      Indicates whether the listener should require that the client present its own certificate chain during TLS negotiation and should fail negotiation if no certificate chain was provided.
      java.lang.String toString()
      Retrieves a string representation of this listener configuration.
      void toString​(java.lang.StringBuilder buffer)
      Appends a string representation of this listener configuration to the provided buffer.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • InMemoryListenerConfig

        public InMemoryListenerConfig​(@NotNull
                                      java.lang.String listenerName,
                                      @Nullable
                                      java.net.InetAddress listenAddress,
                                      int listenPort,
                                      @Nullable
                                      javax.net.ServerSocketFactory serverSocketFactory,
                                      @Nullable
                                      javax.net.SocketFactory clientSocketFactory,
                                      @Nullable
                                      javax.net.ssl.SSLSocketFactory startTLSSocketFactory)
                               throws LDAPException
        Creates a new in-memory directory server listener configuration with the provided settings.
        Parameters:
        listenerName - The name to assign to this listener. It must not be null and must not be the same as the name for any other listener configured in the server.
        listenAddress - The address on which the listener should accept connections from clients. It may be null to indicate that it should accept connections on all addresses on all interfaces.
        listenPort - The port on which the listener should accept connections from clients. It may be 0 to indicate that the server should automatically choose an available port.
        serverSocketFactory - The socket factory that should be used to create sockets when accepting client connections. It may be null if the JVM-default server socket factory should be used.
        clientSocketFactory - The socket factory that should be used to create client connections to the server. It may be null if the JVM-default socket factory should be used.
        startTLSSocketFactory - The socket factory that should be used to add StartTLS encryption to existing connections. It may be null if StartTLS is not to be supported on this listener, and should be null if the server socket factory already provides some other form of communication security.
        Throws:
        LDAPException - If the provided listener name is null or the configured listen port is out of range.
      • InMemoryListenerConfig

        public InMemoryListenerConfig​(@NotNull
                                      java.lang.String listenerName,
                                      @Nullable
                                      java.net.InetAddress listenAddress,
                                      int listenPort,
                                      @Nullable
                                      javax.net.ServerSocketFactory serverSocketFactory,
                                      @Nullable
                                      javax.net.SocketFactory clientSocketFactory,
                                      @Nullable
                                      javax.net.ssl.SSLSocketFactory startTLSSocketFactory,
                                      boolean requestClientCertificate,
                                      boolean requireClientCertificate)
                               throws LDAPException
        Creates a new in-memory directory server listener configuration with the provided settings.
        Parameters:
        listenerName - The name to assign to this listener. It must not be null and must not be the same as the name for any other listener configured in the server.
        listenAddress - The address on which the listener should accept connections from clients. It may be null to indicate that it should accept connections on all addresses on all interfaces.
        listenPort - The port on which the listener should accept connections from clients. It may be 0 to indicate that the server should automatically choose an available port.
        serverSocketFactory - The socket factory that should be used to create sockets when accepting client connections. It may be null if the JVM-default server socket factory should be used.
        clientSocketFactory - The socket factory that should be used to create client connections to the server. It may be null if the JVM-default socket factory should be used.
        startTLSSocketFactory - The socket factory that should be used to add StartTLS encryption to existing connections. It may be null if StartTLS is not to be supported on this listener, and should be null if the server socket factory already provides some other form of communication security.
        requestClientCertificate - Indicates whether the listener should request that the client present its own certificate chain during TLS negotiation. This will be ignored for non-TLS-based connections.
        requireClientCertificate - Indicates whether the listener should require that the client present its own certificate chain during TLS negotiation, and should fail negotiation if the client does not present one. This will be ignored for non-TLS-based connections or if requestClientCertificate is false.
        Throws:
        LDAPException - If the provided listener name is null or the configured listen port is out of range.
    • Method Detail

      • createLDAPConfig

        @NotNull
        public static InMemoryListenerConfig createLDAPConfig​(@NotNull
                                                              java.lang.String listenerName)
                                                       throws LDAPException
        Creates a new listener configuration that will listen for unencrypted LDAP communication on an automatically-selected port on all available addresses. It will not support StartTLS.
        Parameters:
        listenerName - The name to use for the listener. It must not be null.
        Returns:
        The newly-created listener configuration.
        Throws:
        LDAPException - If the provided name is null.
      • createLDAPConfig

        @NotNull
        public static InMemoryListenerConfig createLDAPConfig​(@NotNull
                                                              java.lang.String listenerName,
                                                              int listenPort)
                                                       throws LDAPException
        Creates a new listener configuration that will listen for unencrypted LDAP communication on the specified port on all available addresses. It will not support StartTLS.
        Parameters:
        listenerName - The name to use for the listener. It must not be null.
        listenPort - The port on which the listener should accept connections from clients. It may be 0 to indicate that the server should automatically choose an available port.
        Returns:
        The newly-created listener configuration.
        Throws:
        LDAPException - If the provided listener name is null or the configured listen port is out of range.
      • createLDAPConfig

        @NotNull
        public static InMemoryListenerConfig createLDAPConfig​(@NotNull
                                                              java.lang.String listenerName,
                                                              @Nullable
                                                              java.net.InetAddress listenAddress,
                                                              int listenPort,
                                                              @Nullable
                                                              javax.net.ssl.SSLSocketFactory startTLSSocketFactory)
                                                       throws LDAPException
        Creates a new listener configuration that will listen for unencrypted LDAP communication, and may optionally support StartTLS.
        Parameters:
        listenerName - The name to assign to this listener. It must not be null and must not be the same as the name for any other listener configured in the server.
        listenAddress - The address on which the listener should accept connections from clients. It may be null to indicate that it should accept connections on all addresses on all interfaces.
        listenPort - The port on which the listener should accept connections from clients. It may be 0 to indicate that the server should automatically choose an available port.
        startTLSSocketFactory - The socket factory that should be used to add StartTLS encryption to an existing connection. It may be null if StartTLS is not to be supported on this listener, and should be null if the server socket factory already provides some other form of communication security.
        Returns:
        The newly-created listener configuration.
        Throws:
        LDAPException - If the provided listener name is null or the configured listen port is out of range.
      • createLDAPConfig

        @NotNull
        public static InMemoryListenerConfig createLDAPConfig​(@NotNull
                                                              java.lang.String listenerName,
                                                              @Nullable
                                                              java.net.InetAddress listenAddress,
                                                              int listenPort,
                                                              @Nullable
                                                              javax.net.ssl.SSLSocketFactory startTLSSocketFactory,
                                                              boolean requestClientCertificate,
                                                              boolean requireClientCertificate)
                                                       throws LDAPException
        Creates a new listener configuration that will listen for unencrypted LDAP communication, and may optionally support StartTLS.
        Parameters:
        listenerName - The name to assign to this listener. It must not be null and must not be the same as the name for any other listener configured in the server.
        listenAddress - The address on which the listener should accept connections from clients. It may be null to indicate that it should accept connections on all addresses on all interfaces.
        listenPort - The port on which the listener should accept connections from clients. It may be 0 to indicate that the server should automatically choose an available port.
        startTLSSocketFactory - The socket factory that should be used to add StartTLS encryption to an existing connection. It may be null if StartTLS is not to be supported on this listener, and should be null if the server socket factory already provides some other form of communication security.
        requestClientCertificate - Indicates whether the listener should request that the client present its own certificate chain during TLS negotiation. This will be ignored for non-TLS-based connections.
        requireClientCertificate - Indicates whether the listener should require that the client present its own certificate chain during TLS negotiation, and should fail negotiation if the client does not present one. This will be ignored for non-TLS-based connections or if requestClientCertificate is false.
        Returns:
        The newly-created listener configuration.
        Throws:
        LDAPException - If the provided listener name is null or the configured listen port is out of range.
      • createLDAPSConfig

        @NotNull
        public static InMemoryListenerConfig createLDAPSConfig​(@NotNull
                                                               java.lang.String listenerName,
                                                               @NotNull
                                                               javax.net.ssl.SSLServerSocketFactory serverSocketFactory)
                                                        throws LDAPException
        Creates a new listener configuration that will listen for SSL-encrypted LDAP communication on an automatically-selected port on all available addresses.
        Parameters:
        listenerName - The name to use for the listener. It must not be null.
        serverSocketFactory - The SSL server socket factory that will be used for accepting SSL-based connections from clients. It must not be null.
        Returns:
        The newly-created listener configuration.
        Throws:
        LDAPException - If the provided name is null.
      • createLDAPSConfig

        @NotNull
        public static InMemoryListenerConfig createLDAPSConfig​(@NotNull
                                                               java.lang.String listenerName,
                                                               int listenPort,
                                                               @NotNull
                                                               javax.net.ssl.SSLServerSocketFactory serverSocketFactory)
                                                        throws LDAPException
        Creates a new listener configuration that will listen for SSL-encrypted LDAP communication on the specified port on all available addresses.
        Parameters:
        listenerName - The name to use for the listener. It must not be null.
        listenPort - The port on which the listener should accept connections from clients. It may be 0 to indicate that the server should automatically choose an available port.
        serverSocketFactory - The SSL server socket factory that will be used for accepting SSL-based connections from clients. It must not be null.
        Returns:
        The newly-created listener configuration.
        Throws:
        LDAPException - If the provided name is null.
      • createLDAPSConfig

        @NotNull
        public static InMemoryListenerConfig createLDAPSConfig​(@NotNull
                                                               java.lang.String listenerName,
                                                               @Nullable
                                                               java.net.InetAddress listenAddress,
                                                               int listenPort,
                                                               @NotNull
                                                               javax.net.ssl.SSLServerSocketFactory serverSocketFactory,
                                                               @Nullable
                                                               javax.net.ssl.SSLSocketFactory clientSocketFactory)
                                                        throws LDAPException
        Creates a new listener configuration that will listen for SSL-encrypted LDAP communication on an automatically-selected port on all available addresses.
        Parameters:
        listenerName - The name to use for the listener. It must not be null.
        listenAddress - The address on which the listener should accept connections from clients. It may be null to indicate that it should accept connections on all addresses on all interfaces.
        listenPort - The port on which the listener should accept connections from clients. It may be 0 to indicate that the server should automatically choose an available port.
        serverSocketFactory - The SSL server socket factory that will be used for accepting SSL-based connections from clients. It must not be null.
        clientSocketFactory - The SSL socket factory that will be used to create secure connections to the server. It may be null if a default "trust all" socket factory should be used.
        Returns:
        The newly-created listener configuration.
        Throws:
        LDAPException - If the provided name or server socket factory is null, or an error occurs while attempting to create a client socket factory.
      • createLDAPSConfig

        @NotNull
        public static InMemoryListenerConfig createLDAPSConfig​(@NotNull
                                                               java.lang.String listenerName,
                                                               @Nullable
                                                               java.net.InetAddress listenAddress,
                                                               int listenPort,
                                                               @NotNull
                                                               javax.net.ssl.SSLServerSocketFactory serverSocketFactory,
                                                               @Nullable
                                                               javax.net.ssl.SSLSocketFactory clientSocketFactory,
                                                               boolean requestClientCertificate,
                                                               boolean requireClientCertificate)
                                                        throws LDAPException
        Creates a new listener configuration that will listen for SSL-encrypted LDAP communication on an automatically-selected port on all available addresses.
        Parameters:
        listenerName - The name to use for the listener. It must not be null.
        listenAddress - The address on which the listener should accept connections from clients. It may be null to indicate that it should accept connections on all addresses on all interfaces.
        listenPort - The port on which the listener should accept connections from clients. It may be 0 to indicate that the server should automatically choose an available port.
        serverSocketFactory - The SSL server socket factory that will be used for accepting SSL-based connections from clients. It must not be null.
        clientSocketFactory - The SSL socket factory that will be used to create secure connections to the server. It may be null if a default "trust all" socket factory should be used.
        requestClientCertificate - Indicates whether the listener should request that the client present its own certificate chain during TLS negotiation. This will be ignored for non-TLS-based connections.
        requireClientCertificate - Indicates whether the listener should require that the client present its own certificate chain during TLS negotiation, and should fail negotiation if the client does not present one. This will be ignored for non-TLS-based connections or if requestClientCertificate is false.
        Returns:
        The newly-created listener configuration.
        Throws:
        LDAPException - If the provided name or server socket factory is null, or an error occurs while attempting to create a client socket factory.
      • getListenerName

        @NotNull
        public java.lang.String getListenerName()
        Retrieves the name for this listener configuration.
        Returns:
        The name for this listener configuration.
      • getListenAddress

        @Nullable
        public java.net.InetAddress getListenAddress()
        Retrieves the address on which the listener should accept connections from clients, if defined.
        Returns:
        The address on which the listener should accept connections from clients, or null if it should accept connections on all addresses on all interfaces.
      • getListenPort

        public int getListenPort()
        Retrieves the port on which the listener should accept connections from clients, if defined.
        Returns:
        The port on which the listener should accept connections from clients, or 0 if the listener should automatically select an available port.
      • getServerSocketFactory

        @Nullable
        public javax.net.ServerSocketFactory getServerSocketFactory()
        Retrieves the socket factory that should be used to create sockets when accepting client connections, if defined.
        Returns:
        The socket factory that should be used to create sockets when accepting client connections, or null if the JVM-default server socket factory should be used.
      • getClientSocketFactory

        @Nullable
        public javax.net.SocketFactory getClientSocketFactory()
        Retrieves the socket factory that should be used to create client connections to the server, if defined.
        Returns:
        The socket factory that should be used to create client connections to the server, or null if the JVM-default socket factory should be used.
      • getStartTLSSocketFactory

        @Nullable
        public javax.net.ssl.SSLSocketFactory getStartTLSSocketFactory()
        Retrieves the socket factory that should be used to add StartTLS encryption to existing connections, if defined.
        Returns:
        The socket factory that should be used to add StartTLS encryption to existing connections, or null if StartTLS should not be supported.
      • requestClientCertificate

        public boolean requestClientCertificate()
        Indicates whether the listener should request that the client present its own certificate chain during TLS negotiation. This will be ignored for non-TLS-based connections.
        Returns:
        true if the listener should request that the client present its own certificate chain during TLS negotiation, or false if not.
      • requireClientCertificate

        public boolean requireClientCertificate()
        Indicates whether the listener should require that the client present its own certificate chain during TLS negotiation and should fail negotiation if no certificate chain was provided. This will be ignored for non-TLS-based connections, and it will also be ignored if requestClientCertificate returns false.
        Returns:
        true if the listener should require that the client present its own certificate chain during TLS negotiation, or false if TLS negotiation should continue even if the client did not present a certificate chain when requested.
      • toString

        @NotNull
        public java.lang.String toString()
        Retrieves a string representation of this listener configuration.
        Overrides:
        toString in class java.lang.Object
        Returns:
        A string representation of this listener configuration.
      • toString

        public void toString​(@NotNull
                             java.lang.StringBuilder buffer)
        Appends a string representation of this listener configuration to the provided buffer.
        Parameters:
        buffer - The buffer to which the information should be appended.