# Class HttpsServer

java.lang.Object
com.sun.net.httpserver.HttpServer
com.sun.net.httpserver.HttpsServer

public abstract class HttpsServer extends HttpServer
This class is an extension of `HttpServer` which provides support for HTTPS.

A `HttpsServer` must have an associated `HttpsConfigurator` object which is used to establish the SSL configuration for the SSL connections.

All other configuration is the same as for `HttpServer`.

Since:
  1.6

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `HttpsServer()`
  Constructor for subclasses to call.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static HttpsServer`
  `create()`
  Creates a `HttpsServer` instance which is initially not bound to any local address/port.
  `static HttpsServer`
  `create(InetSocketAddress addr, int backlog)`
  Create a `HttpsServer` instance which will bind to the specified `InetSocketAddress` (IP address and port number).
  `static HttpsServer`
  `create(InetSocketAddress addr, int backlog, String path, HttpHandler handler, Filter... filters)`
  Creates an `HttpsServer` instance with an initial context.
  `abstract HttpsConfigurator`
  `getHttpsConfigurator()`
  Gets this server's `HttpsConfigurator` object, if it has been set.
  `abstract void`
  `setHttpsConfigurator(HttpsConfigurator config)`
  Sets this server's `HttpsConfigurator` object.

  ### Methods declared in class HttpServer

  `bind, createContext, createContext, getAddress, getExecutor, removeContext, removeContext, setExecutor, start, stop`
  Modifier and Type
  Method
  Description
  `abstract void`
  `bind(InetSocketAddress addr, int backlog)`
  Binds a currently unbound `HttpServer` to the given address and port number.
  `abstract HttpContext`
  `createContext(String path)`
  Creates a HttpContext without initially specifying a handler.
  `abstract HttpContext`
  `createContext(String path, HttpHandler handler)`
  Creates a `HttpContext`.
  `abstract InetSocketAddress`
  `getAddress()`
  Returns the address this server is listening on
  `abstract Executor`
  `getExecutor()`
  Returns this server's `Executor` object if one was specified with `HttpServer.setExecutor(Executor)`, or `null` if none was specified.
  `abstract void`
  `removeContext(HttpContext context)`
  Removes the given context from the server.
  `abstract void`
  `removeContext(String path)`
  Removes the context identified by the given path from the server.
  `abstract void`
  `setExecutor(Executor executor)`
  Sets this server's `Executor` object.
  `abstract void`
  `start()`
  Starts this server in a new background thread.
  `abstract void`
  `stop(int delay)`
  Stops this server by closing the listening socket and disallowing any new exchanges from being processed.

  ### Methods declared in class Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
  Modifier and Type
  Method
  Description
  `protected Object`
  `clone()`
  Creates and returns a copy of this object.
  `boolean`
  `equals(Object obj)`
  Indicates whether some other object is "equal to" this one.
  `protected void`
  `finalize()`
  Deprecated, for removal: This API element is subject to removal in a future version.
  Finalization is deprecated and subject to removal in a future release.
  `final Class<?>`
  `getClass()`
  Returns the runtime class of this `Object`.
  `int`
  `hashCode()`
  Returns a hash code value for this object.
  `final void`
  `notify()`
  Wakes up a single thread that is waiting on this object's monitor.
  `final void`
  `notifyAll()`
  Wakes up all threads that are waiting on this object's monitor.
  `String`
  `toString()`
  Returns a string representation of the object.
  `final void`
  `wait()`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
  `final void`
  `wait(long timeoutMillis)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
  `final void`
  `wait(long timeoutMillis, int nanos)`
  Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

- ## Constructor Details

  - ### HttpsServer

    protected HttpsServer()
    Constructor for subclasses to call.

- ## Method Details

  - ### create

    public static HttpsServer create() throws IOException
    Creates a `HttpsServer` instance which is initially not bound to any local address/port. The `HttpsServer` is acquired from the currently installed `HttpServerProvider`. The server must be bound using `HttpServer.bind(InetSocketAddress,int)` before it can be used. The server must also have a `HttpsConfigurator` established with `setHttpsConfigurator(HttpsConfigurator)`.
    Returns:
      an instance of `HttpsServer`
    Throws:
      `IOException` - if an I/O error occurs

  - ### create

    public static HttpsServer create(InetSocketAddress addr, int backlog) throws IOException
    Create a `HttpsServer` instance which will bind to the specified `InetSocketAddress` (IP address and port number). A maximum backlog can also be specified. This is the maximum number of queued incoming connections to allow on the listening socket. Queued TCP connections exceeding this limit may be rejected by the TCP implementation. The `HttpsServer` is acquired from the currently installed `HttpServerProvider`. The server must have a `HttpsConfigurator` established with `setHttpsConfigurator(HttpsConfigurator)`.
    Parameters:
      `addr` - the address to listen on, if `null` then `HttpServer.bind(InetSocketAddress,int)` must be called to set the address
      `backlog` - the socket backlog. If this value is less than or equal to zero, then a system default value is used.
    Returns:
      an instance of `HttpsServer`
    Throws:
      `BindException` - if the server cannot bind to the requested address, or if the server is already bound
      `IOException` - if an I/O error occurs

  - ### create

    public static HttpsServer create(InetSocketAddress addr, int backlog, String path, HttpHandler handler, Filter... filters) throws IOException
    Creates an `HttpsServer` instance with an initial context.

    The server is created with an initial context that maps the URI `path` to the exchange `handler`. The initial context is created as if by an invocation of `createContext(path)`. The `filters`, if any, are added to the initial context, in the order they are given. The returned server is not started so can be configured further if required.

    The server instance will bind to the given `InetSocketAddress`.

    A maximum backlog can also be specified. This is the maximum number of queued incoming connections to allow on the listening socket. Queued TCP connections exceeding this limit may be rejected by the TCP implementation. The HttpsServer is acquired from the currently installed `HttpServerProvider`.

    The server must have an HttpsConfigurator established with `setHttpsConfigurator(HttpsConfigurator)`.

    Parameters:
      `addr` - the address to listen on, if `null` then `bind` must be called to set the address
      `backlog` - the socket backlog. If this value is less than or equal to zero, then a system default value is used
      `path` - the root URI path of the context, must be absolute
      `handler` - the HttpHandler for the context
      `filters` - the Filters for the context, optional
    Returns:
      the HttpsServer
    Throws:
      `BindException` - if the server cannot bind to the address
      `IOException` - if an I/O error occurs
      `IllegalArgumentException` - if path is invalid
      `NullPointerException` - if any of: `path`, `handler`, `filters`, or any element of `filters`, are `null`
    Since:
      18

  - ### setHttpsConfigurator

    public abstract void setHttpsConfigurator(HttpsConfigurator config)
    Sets this server's `HttpsConfigurator` object.
    Parameters:
      `config` - the `HttpsConfigurator` to set
    Throws:
      `NullPointerException` - if config is `null`

  - ### getHttpsConfigurator

    public abstract HttpsConfigurator getHttpsConfigurator()
    Gets this server's `HttpsConfigurator` object, if it has been set.
    Returns:
      the `HttpsConfigurator` for this server, or `null` if not set