code: private SSLServerSocketFactory getServerSocketFactory(String id) throws IOException {
          // first use?
          SSLServerSocketFactory serverSocketFactory = serverSocketFactoryMap.get(id);
          if (serverSocketFactory == null) {
              // the SSLConfig is optional, so if it's not there, use the default SSLSocketFactory.
              if (id == null) {
                  serverSocketFactory = (SSLServerSocketFactory) SSLServerSocketFactory.getDefault();
              } else {
                  try {
                      serverSocketFactory = sslConfig.createSSLServerFactory(id);
                  } catch (Exception e) {
                      Tr.error(tc, "Unable to create server SSL socket factory", e);
                      throw (IOException) new IOException("Unable to create server SSL socket factory: " + e.getMessage()).initCause(e);
                  }
                  serverSocketFactoryMap.put(id, serverSocketFactory);
              }
              // There's a bit of a timing problem with server-side ORBs.  Part of the ORB shutdown is to
              // establish a self-connection to shutdown the acceptor threads.  This requires a client
              // SSL socket factory.  Unfortunately, if this is occurring during server shutdown, the
              // FileKeystoreManager will get a NullPointerException because some name queries fail because
              // things are getting shutdown.  Therefore, if we need the server factory, assume we'll also
              // need the client factory to shutdown, and request it now.
              getSocketFactory(id);
          }
          return serverSocketFactory;
      }
docs: On-demand creation of an SSL server socket factory for an ssl alias
  
  @return The SSLServerSocketFactory this connection should be using to create
  secure connections.
  @throws java.io.IOException if we can't get a server socket factory