Я пытаюсь настроить HTTP 2 для моего проекта Spring Boot, который работает на Embedded Tomcat Server 8.5.34, но мне не удается это сделать. Я следил за этот SO поток, но не смог этого добиться. Мой сервер запускается и работает нормально, но он работает в HTTP 1.1 даже после настройки для HTTP 2. Я настроил свой проект для работы с самоподписанным сертификатом, и эти настройки находятся в файле 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;
}
}
@StephaneNicoll хорошо, Стефан, не могли бы вы вкратце рассказать о том, насколько сильно мои коды повлияют, если я обновлюсь. В основном мой проект использует Spring MVC, Spring Data, Spring Elastic Search, Hibernate JPA.
@StephaneNicoll Я попытался изменить версию весенней загрузки на 2.0.7 с 1.5.17 и обнаружил, что в классах много изменений. Так что сейчас я не могу себе этого позволить.
Вам все равно придется это сделать, 1.5 будет EOL в августе следующего года. Если у вас возникли проблемы с обновлением, вы можете спросить здесь или на канале Gitter проекта Spring Boot.
@StephaneNicoll, большое спасибо.
Я не знаю, что не так, но в SB2 есть поддержка HTTP / 2 «из коробки», поэтому на вашем месте я бы обновился.