0

我正在尝试为在 Embedded Tomcat Server 8.5.34 中运行的 Spring Boot 项目配置 HTTP 2,但我无法这样做。我遵循了这个 SO Thread但无法实现。我的服务器启动并且工作正常,但即使在为 HTTP 2 配置之后,它也可以在 HTTP 1.1 中工作。我已将我的项目配置为使用自签名证书运行,并且这些设置在application.properties文件中。下面是我的配置文件。请帮忙。

@Configuration
public class ConnectorConfig {

    @Bean
    public EmbeddedServletContainerFactory servletContainer() {
        TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory() {
            @Override
            protected void postProcessContext(Context context) {
                SecurityConstraint securityConstraint = new SecurityConstraint();
                securityConstraint.setUserConstraint("CONFIDENTIAL");
                SecurityCollection collection = new SecurityCollection();
                collection.addPattern("/*");
                securityConstraint.addCollection(collection);
                context.addConstraint(securityConstraint);
            }
        };

        tomcat.addAdditionalTomcatConnectors(getHttpConnector());

        // the following line isn't working
        // tomcat.addConnectorCustomizers((TomcatConnectorCustomizer) connector -> connector.addUpgradeProtocol(new Http2Protocol()));
        return tomcat;
    }


    @Bean // not working
    public EmbeddedServletContainerCustomizer tomcatCustomizer() {
        return (container) -> {
            if (container instanceof TomcatEmbeddedServletContainerFactory) {
                ((TomcatEmbeddedServletContainerFactory) container)
                        .addConnectorCustomizers((connector) -> connector.addUpgradeProtocol(new Http2Protocol()));
            }
        };
    }

    private Connector getHttpConnector() {
        Connector connector = new Connector(TomcatEmbeddedServletContainerFactory.DEFAULT_PROTOCOL);
        connector.setScheme("http");
        connector.setPort(8080);
        connector.setSecure(false);
        connector.setRedirectPort(9000);

        // the following line isn't working
        // connector.addUpgradeProtocol(new Http2Protocol());
        return connector;
    }
}
4

0 回答 0