/ / Por que o Tomcat não inicia o conector quando eu inicio o servidor em si? - java, tomcat, conector

Por que o Tomcat não inicia o conector quando eu inicio o servidor em si? - java, tomcat, conector

Eu tenho código para incorporar o Tomcat que se parece com isso:

public void start()
{
final Tomcat tomcat = createTomcat();

try
{
tomcat.start();
}
catch (Exception e)
{
throw new RuntimeException("Failed to start web server", e);
}

this.tomcat = tomcat;
}

private Tomcat createTomcat()
{
Tomcat tomcat = new Tomcat();
tomcat.setBaseDir(FileUtils.getTempDirectory().getAbsolutePath());

tomcat.setConnector(createConnector());

// ... eliding the webapp, session, access log setup ...

return tomcat;
}

private Connector createConnector()
{
Connector connector = new Connector();
connector.setPort(context.getWebServerPort());
connector.setScheme("https");
connector.setSecure(true);

//prepareKeyStore(context.getListeningHost());

connector.setAttribute("address", context.getListeningAddress());
connector.setAttribute("SSLEnabled", true);

// Bind on start() instead of init() so that the port is closed faster on shutdown
// I still have another problem where stop() seems to return before shutdown is
// truly complete!
connector.setAttribute("bindOnInit", false);

connector.setAttribute("keystoreFile", "/my/keystore");
connector.setAttribute("keystorePass", "password");
connector.setAttribute("clientAuth", "false");
connector.setAttribute("sslProtocol", "TLS");
connector.setAttribute("keyAlias", context.getListeningHost());
connector.setAttribute("keyPass", "password");

return connector;
}

Quando isso é executado, o Tomcat não inicia a escuta em nenhuma porta. Eu procurei e descobri que o conector ainda estava no estado NEW.

Por que o Tomcat não inicia quando inicio o próprio Tomcat?

O mesmo ocorre em stop () e destroy (). Nenhum deles parece chamá-lo.

Nenhum erro ocorre e, se depois eu chamar tomcat.getConnector().start(), parece ter sucesso e tornar o serviço contactável.

Respostas:

0 para resposta № 1

Como você definiu bindOnInit como false, é necessário iniciar explicitamente o conector para o tomcat começar a escutar a porta configurada.

Defina bindOnInit como true (ou você não precisa defini-lo, pois true é o valor padrão) para o tomcat começar a escutar em tomcat.start ()

A configuração bindOnInit decide se é necessário ligar / desligar as portas no init / destroy ou iniciar / parar.