我正在使用spring框架创建一个RESTApi。我的IDE是STS。嵌入式Tomcat概念非常有用,而且易于实现。只要导出一个jar,运行它,就可以让您的服务启动并运行,但是嵌入式Tomcat正在使用。我做了一些研究,发现APR HTTP连接器比Nio好得多,我想使用APR。还有一个选项:导出war文件,将其部署到tomcat中,并配置其HTTP连接器。但是我真的很喜欢嵌入式tomcat,我想知道它的HTTP连接器是否有可能从Nio更改为APR?
发布于 2022-05-26 05:55:48
我们可以通过覆盖org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory并为新的org.apache.catalina.connector.Connector提供org.apache.coyote.http11.Http11AprProtocol协议,从而在springboot嵌入式tomcat中启用APR。
下面的代码可能有助于完成它。
@Bean
public TomcatServletWebServerFactory servletContainerFactoryProd() {
TomcatServletWebServerFactory tomcat = new TomcatServletWebServerFactory() {
@Override
protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) {
// to create new directories and files and add them to Context
return super.getTomcatWebServer(tomcat);
}
};
Connector connector = new Connector("org.apache.coyote.http11.Http11AprProtocol");
Http11AprProtocol protocol = (Http11AprProtocol) connector.getProtocolHandler();
connector.setProperty("compression", "on");
connector.setProperty("compressableMimeType", "text/html,text/xml,text/plain,application/json,application/xml");
// can also enable ssl and provide certificate details
tomcat.addAdditionalTomcatConnectors(connector);
return tomcat;
}
https://stackoverflow.com/questions/48562381
复制相似问题