java - starter - Falta TomcatEmbeddedServletContainerFactory en Spring Boot 2
spring boot wikipedia (2)
En Spring boot 2.0.0.RELEASE puede reemplazar con el siguiente código:
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@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(redirectConnector());
return tomcat;
}
private Connector redirectConnector() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setScheme("http");
connector.setPort(8080);
connector.setSecure(false);
connector.setRedirectPort(8443);
return connector;
}
Tengo la aplicación Spring Boot versión 1.5.x, que utiliza org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory
, estoy intentando org.springframework.boot.context.embedded.tomcat.TomcatEmbeddedServletContainerFactory
a Spring Boot 2, pero la aplicación no se compila, aunque tengo una dependencia a org.springframework.boot:spring-boot-starter-tomcat
. El compilador emite el siguiente error:
error: package org.springframework.boot.context.embedded.tomcat
La clase ha sido eliminada y reemplazada por org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory
Para obtener más información, consulte: 2.0.0.RELEASE , que dice:
Para admitir casos de uso reactivos, la estructura del paquete de contenedores incrustados se ha rediseñado bastante. EmbeddedServletContainer ha sido renombrado a WebServer y el paquete org.springframework.boot.context.embedded se ha reubicado en org.springframework.boot.web.server. En consecuencia, EmbeddedServletContainerCustomizer ha cambiado su nombre a WebServerFactoryCustomizer.
Por ejemplo, si estaba personalizando el contenedor Tomcat incorporado utilizando la interfaz de devolución de llamada TomcatEmbeddedServletContainerFactory, ahora debería usar TomcatServletWebServerFactory y si estaba usando un bean EmbeddedServletContainerCustomizer, ahora debería usar un bean WebServerFactoryCustomizer.
Tuve el problema de que necesitaba enviar una solicitud más grande, entonces el tamaño predeterminado permitido:
@Bean
public TomcatServletWebServerFactory containerFactory() {
return new TomcatServletWebServerFactory() {
protected void customizeConnector(Connector connector) {
int maxSize = 50000000;
super.customizeConnector(connector);
connector.setMaxPostSize(maxSize);
connector.setMaxSavePostSize(maxSize);
if (connector.getProtocolHandler() instanceof AbstractHttp11Protocol) {
((AbstractHttp11Protocol <?>) connector.getProtocolHandler()).setMaxSwallowSize(maxSize);
logger.info("Set MaxSwallowSize "+ maxSize);
}
}
};
}