View Javadoc
1   package nl.altindag.ssl;
2   
3   import com.sun.net.httpserver.HttpExchange;
4   import com.sun.net.httpserver.HttpHandler;
5   import com.sun.net.httpserver.HttpsConfigurator;
6   import com.sun.net.httpserver.HttpsParameters;
7   import com.sun.net.httpserver.HttpsServer;
8   
9   import java.io.IOException;
10  import java.io.OutputStream;
11  import java.net.InetSocketAddress;
12  import java.nio.charset.StandardCharsets;
13  import java.util.concurrent.Executor;
14  
15  public final class ServerUtils {
16  
17      private ServerUtils() {}
18  
19      public static HttpsServer createServer(int port, SSLFactory sslFactory, Executor executor, String payload) throws IOException {
20          InetSocketAddress socketAddress = new InetSocketAddress(port);
21          HttpsServer server = HttpsServer.create(socketAddress, 0);
22          server.setExecutor(executor);
23          server.setHttpsConfigurator(new HttpsConfigurator(sslFactory.getSslContext()) {
24              @Override
25              public void configure(HttpsParameters params) {
26                  params.setSSLParameters(sslFactory.getSslParameters());
27              }
28          });
29  
30          class HelloWorldController implements HttpHandler {
31              @Override
32              public void handle(HttpExchange exchange) throws IOException {
33                  try (OutputStream responseBody = exchange.getResponseBody()) {
34  
35                      exchange.getResponseHeaders().set("Content-Type", "text/plain");
36  
37                      exchange.sendResponseHeaders(200, payload.length());
38                      responseBody.write(payload.getBytes(StandardCharsets.UTF_8));
39                  }
40              }
41          }
42          server.createContext("/api/hello", new HelloWorldController());
43          return server;
44      }
45  
46  }