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 }