package am.ik.categolj2.config; import lombok.Data; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.nio.SelectChannelConnector; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; import org.springframework.boot.context.embedded.Ssl; import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.SocketUtils; @Configuration @ConfigurationProperties("server-http") @Data public class EmbeddedServerConfig { private int port = 8080; private String host; @Value("${local.server.port:8443}") private int httpsPort; @Bean EmbeddedServletContainerFactory servletContainer() { JettyEmbeddedServletContainerFactory jetty = new JettyEmbeddedServletContainerFactory() { @Override protected void configureSsl(SslContextFactory factory, Ssl ssl) { super.configureSsl(factory, ssl); factory.addExcludeProtocols("SSLv2Hello", "SSLv3", "TLSv1", "TLSv1.1"); } }; jetty.addServerCustomizers(server -> server.addConnector(createSslConnector(server))); return jetty; } Connector createSslConnector(Server server) { Connector connector = new SelectChannelConnector(); connector.setHost(host); if (port <= 0) { do { port = SocketUtils.findAvailableTcpPort(); } while (port == httpsPort); } connector.setPort(port); server.addConnector(connector); return connector; } }