0
votes

Actually, it is not a problem, but a strange thing I would like to understand. I use SpringBoot2 with embedded Tomcat. And I've added self-signed SSL certificate. This is pretty usual config:

server.ssl.key-store-type=PKCS12
server.ssl.key-store=classpath:keystore.p12
server.ssl.key-store-password=123456
server.ssl.key-alias=tomcat
server.port=8443

And I made a connector, to force http -> https redirect, like in many examples:

private Connector getHttpConnector() {
        Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);
        connector.setRedirectPort(8443);
        return connector;
    }

If I would not specify server.port property in my config, I will see the following error:

Description:

The Tomcat connector configured to listen on port 8080 failed to start. The port may already be in use or the connector may be misconfigured.

Action:

Verify the connector's configuration, identify and stop any process that's listening on port 8080, or configure this application to listen on another port.

But if I will, I will see following:

o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8443 (https) 8080 (http) with context path ''

Why server.port starts to point at https port??? Even sources of springframework.boot.autoconfigure.web.ServerProperties says that it is

/**
 * Server HTTP port.
 */

Is it ok, or I've got something strange in my server? Or this is how Conectors works? :) Thank you

1

1 Answers

1
votes

By default, the embedded server start on port 8080 if you don't give any value for server.port in the properties file And you are also specifying connectors port as 8080 (connector.setPort(8080);) Hence you are getting port conflicts.