2014-10-28 3 views
0

Есть ли способ запустить приложение Spring Boot (runnable war), чтобы он прослушивал два порта - один с SSL и один без SSL. Я использую встроенный Tomcat 8.Запуск приложения Spring Boot (встроенный Tomcat) с SSL и незашифрованным одновременно

SSL в настоящее время сконфигурирован с использованием

@Bean 
@Profile('tls') 
EmbeddedServletContainerCustomizer servletContainerCustomizer() 
throws Exception { 

    new EmbeddedServletContainerCustomizer() { 
     @Override 
     public void customize (ConfigurableEmbeddedServletContainer container) { 
      TomcatEmbeddedServletContainerFactory tomcat = (TomcatEmbeddedServletContainerFactory) container 
      tomcat.addConnectorCustomizers (
        new TomcatConnectorCustomizer() { 
         @Override 
         public void customize (Connector connector) { 
          connector.setPort  (Integer.parseInt (retrieveRequiredSpringProperty ('ssl.connection.port'))) 
          connector.setSecure (true) 
          connector.setScheme ('https') 
          connector.setProtocol (retrieveSpringPropertyOrSpecified ('ssl.connection.protocol', 'HTTP/1.1')) 

          Http11NioProtocol proto = (Http11NioProtocol) connector.getProtocolHandler() 
          proto.setSSLEnabled (true) 
          proto.setKeystoreFile (retrieveRequiredSpringProperty ('ssl.protocol.keystore.file')) 
          proto.setKeystorePass (retrieveRequiredSpringProperty ('ssl.protocol.keystore.password')) 
          proto.setKeyPass  (retrieveSpringPropertyOrSpecified ('ssl.protocol.keystore.cert.password', null)) 
          proto.setKeystoreType ('JKS') 
          proto.setKeyAlias  (retrieveRequiredSpringProperty ('ssl.protocol.keystore.cert.name')) 
          proto.setSslProtocol ('TLS') 
          proto.setClientAuth ('false') 
         } 
        } 
      ) 
     } 
    } 
} 

Я попытался с использованием нескольких TomcatConnectorCustomizer сек, но последний в списке, кажется, перезаписать, а не аддитивным.

Любые предложения приветствуются, как всегда!

ответ

2

A TomcatConnectorCustomizer только изменяет существующие Connector (ключ в названии). Чтобы добавить дополнительные соединители, вам просто нужен другой API (пример here), например. (скопирован из образца):

@Bean 
public EmbeddedServletContainerFactory servletContainer() { 
    TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory(); 
    tomcat.addAdditionalTomcatConnectors(createConnector()); 
    return tomcat; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^